[问题] doulbe free or corruoption

楼主: xanushan (腾夜)   2016-06-16 16:20:16
请教一下各位大大,修改程式的时候发生 doulbe free or corruoption的问题,该如何
解决
环境rat hat 4 / gcc 34
##手机发文排版不佳,请见谅。
程式码简化,短网址如下:
http://codepad.org/STcOU5QB
作者: Hazukashiine (私は幸せです)   2016-06-16 16:26:00
for (exp1; exp2; exp3) { stat; }从这段 code 看不到 double free 除非有水晶球吧?还有为什么会 free 一个不是指标型态的变量啊 QQ
楼主: xanushan (腾夜)   2016-06-16 16:33:00
已更正. 打太快打错…
作者: bibo9901 (function(){})()   2016-06-16 16:35:00
因为你在write data 循环条件用 j, 但里面用 k ?
作者: Hazukashiine (私は幸せです)   2016-06-16 16:35:00
---> float a; free(a); <---
楼主: xanushan (腾夜)   2016-06-16 16:44:00
抱歉让大家伤眼了…已更正…所以不能重复free吗…如果会重复malloc 的话新的网址如右:http://codepad.org/iFWO7Kt8编译有过,但跑出double free ....
作者: bibo9901 (function(){})()   2016-06-16 17:03:00
你a,b,c还是没初始化啊
楼主: xanushan (腾夜)   2016-06-16 17:09:00
sor…更正了…都给NULL…结果一样…http://codepad.org/az35g2cV还是错不在这 …因为我只有改if里的code而己
作者: yvb   2016-06-16 17:20:00
为什么 free(b); 后却设 a=NULL; 而不是设 b=NULL; ??
楼主: xanushan (腾夜)   2016-06-16 17:25:00
打错…改好了…QQhttp://codepad.org/STcOU5QB错误结果一样…刚刚发现把第二个ball[j].counter2换成其他变量就没有错误了…有大大能解答吗…(malloc)
作者: yvb   2016-06-16 17:59:00
那就是你未贴出的部分, 存取越界把heap搞坏, 所以free()报错.比方你ball的宣告长什么样,或是如何取得ball的空间.以及 a b c 的存取动作.没看到错不代表没错,可能只是刚好没动到free()时,检查的部分.
作者: phishingphi (hsnutontu)   2016-06-16 21:17:00
可以考虑用valgrind之类的tool
作者: steve1012 (steve)   2016-06-18 05:23:00
用tool 直接看哪里free

Links booklink

Contact Us: admin [ a t ] ucptt.com