PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
EE_DSnP
[問題] HW4 ***glibc detected***
作者:
fatandy567
(Technofreak)
2012-11-22 23:29:25
我的程式跑do4 的測資,跑到"mtn 1 -a 0"這行,程式會在 MTNew 指令中的
if(CmdExec::lexOptions(option,options)==false) crash
錯誤訊息是:
***glibc detected*** malloc() memory corruption ......
然號跑出trace back之類的一大多位址
這是什麼問題??
作者:
ric2k1
(Ric)
2011-01-22 23:41:00
建議用一個最小而會造成 crash 的 dofile,跑 debugger慢慢trace 你的 code. 應該是不知道在什麼地方你把 memorycorrupt 掉了... 可能也沒有比用 debugger 更好的辦法...
作者: fatandy567 (Technofreak)
2011-01-22 23:50:00
可是我do1~3都正確耶??
作者:
ric2k1
(Ric)
2011-01-23 00:04:00
可是 do4 會 crash 還是表示你的程式有 bug...要相信 crash 事出必有因然後想: 還好不是等到助教那邊才被發現 crash...
作者:
ypf791
(路人1號)
2011-01-23 00:18:00
面對這種 bug 只能把自己的程式邏輯重想一遍又一遍....
作者:
ric2k1
(Ric)
2011-01-23 00:31:00
恩,用 debugger 把變數 print 出來絕對會有幫助的另外,這種 memory corruption 通常是某個變數的值在莫名奇妙的地方被改掉了。由於變數不在它的 domain 就無法print可以把 "絕對記憶體位置" 的內容 display 出來.像是 display *((MemTestObj *) 0x7f00b8c) 之類的
作者: gamerred (game859)
2011-01-23 00:38:00
感覺像是double delete的問題 然後回報的位置通常很奇怪
作者:
ric2k1
(Ric)
2011-01-23 00:45:00
double delete 應該會說 "doubly freed error..." 之類的
作者: fatandy567 (Technofreak)
2011-01-24 00:24:00
果然是自己耍蠢了,memblock的getmem應該是先return再移動指標,結果果先移動再輸出,難怪會crash....謝謝老師和大家
作者:
ric2k1
(Ric)
2011-01-24 00:57:00
Great!
作者:
stanleysu
(士唐)
2011-01-24 01:45:00
我也跟你有同樣的crash耶,不過我是錯在rn在remainsize太小的時候會變成奇怪的值
作者: fatandy567 (Technofreak)
2011-01-24 11:19:00
樓上會不會是size_t不含負的關係,要不要轉成int試試?
繼續閱讀
Re: [情報] -g 與 -O3
yuting1105
[情報] HW#5
ric2k1
[心得] vim真是神物!(replace/regex)
yan12125
[問題] 請問隨機delete -Random
andy13579372
Re: [情報] gdb/ddd quick reference
ric2k1
Re: [閒聊] 關於今天想不起來的關於 debugger 的笑話
ric2k1
Re: [情報] Lecture notes #3 & 8
ric2k1
[問題] vim (跟hw無關)
XDucka
[心得] 無聊自己寫的測資 大家可以跑跑看
XDucka
[問題] 有關freearray
xxxseanxxx
Links
booklink
Contact Us: admin [ a t ] ucptt.com