[問題] 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