EE_DSnP 板


LINE

遇到看不出來的bug,想請教各位ˊˋ 我的程式目前執行dofile do1~do4都能正常運作, do5執行到最後一行以前都和ref結果一樣,讀進最後一行 mtest>q -f 時crash了。 以ddd執行得到的錯誤訊息大致如下(非常長...) *** glibc detected *** /home/Documents/hw4/memTest:corrupted double-linked list: 0x000000000064e9a0*** ====== Backtrace: ======== ...(許多看不懂的路徑) ====== Memory map: ======== ...(許多看不懂的路徑) [heap] ... [vdso] ... [stack] ... [vsyscall] Program received signal SIGABRT, Aborted. 0x00007ffff72dad05 in raise () from / lib/x86_64-linux-gne/libc.so.6 我試著用ddd trace, up到某一層,停在 ~vector() {std::_Destory(this->_M_impl._M_start, this->_M_impl._M_finish,_M_get_Tp_allocator());}這一行 再up到頂發現停在 ~MemTest() {}, google說可能是重複free一個pointer造成***glibc detected***, 我猜是執行q - f,要destruct mtest時,處理vector<MemTestObj*> _objList和_arrList時出了問題, 但mtest的destructor裏頭是空的,好像沒有對data member做什麼事。 真是傷腦筋阿。 麻煩各位指教~~ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.106
1F:→ djshen:我之前發生類似問題是在MemRecycleList的reset裡 11/24 13:41
2F:→ djshen:我判斷_nextList是否為NULL再做delete 不過之前delete完 11/24 13:42
3F:→ djshen:沒讓_nextList=0 所以判斷錯誤就free兩次 11/24 13:43
4F:→ djshen:如果把do5的最後的mtr拿掉就沒有問題的話 就可能是我說的 11/24 13:43
5F:→ djshen:情形吧 11/24 13:43
6F:推 gamerred:從第一行錯誤訊息看起來像是某個用std::list的地方炸了 11/24 13:45
7F:推 gamerred:好像沒用到orz 不要理我QQ 11/24 13:50
8F:→ djshen:應該不是我說的問題 要不要檢查所有delete的地方@@ 11/24 13:51
9F:推 ric2k1:感覺像是一個已經被 delete 掉的東西又再被拿出來 delete 11/24 21:27
10F:→ cgl:謝謝各位的回答! 11/24 22:03
11F:推 ric2k1:也許可以再 destructor cout 些什麼觀察一下... 11/24 22:24
12F:→ cgl:想用valgrind來找bug(double free),但它會避免crash發生..ˊˋ 11/25 01:59
13F:推 ric2k1:或者你可以先把一些 code comment out 掉,看看會怎樣? 11/25 02:53
14F:推 gamerred:應該是recycleList的destructor 他已經幫你遞迴呼叫 11/25 04:38
15F:→ gamerred:不用在自己手動刪掉全部 11/25 04:39
16F:推 kickpp:要是沒有在reset裡再呼叫reset並不會有所謂的自動遞迴... 11/25 09:31
17F:推 kickpp:data member裡pointer指向的物件destructor不會被自動呼叫 11/25 09:36
18F:→ djshen:list的destructor不是有呼叫reset? 11/25 10:23
19F:推 kickpp:看寫法吧 可以iterative也可以recursive reset 11/25 11:59
20F:→ kickpp:只是要從最尾巴delete回來... 11/25 12:01
21F:→ kickpp:重點是_nextlist是個pointer 當class被destruct 11/25 12:04
22F:→ kickpp:就只是pointer本身被刪除 而不會呼叫memrecyclelist的 11/25 12:05
23F:→ kickpp:destructor... 11/25 12:06
24F:推 yanshencun:樓上正解...剛剛也de到同樣的bug 11/25 12:37
25F:→ yanshencun:因為~MemRecycleList() { reset(); } 所以如果在 11/25 12:39
26F:→ yanshencun:void MemRecycleList::reset() {...}用到delete就會 11/25 12:40
27F:→ yanshencun:自動變成recursive 在處理 11/25 12:41
28F:→ yanshencun:如果自己另外在裡面寫到iterative,就會重複delete 11/25 12:42
29F:推 gamerred:樓上才是正解 除非kickpp不用delete 11/25 15:36
30F:→ gamerred:不然你就是destructor裡面刪掉了老師寫的reset();那行 11/25 15:37
31F:推 kickpp:我只是針對不會自己有自動遞迴這件事 我當然有寫delete 11/25 17:25
32F:→ kickpp:看不懂我的意思就算了吧... 11/25 17:25
33F:推 kickpp:想要表達的大概就是2840篇裡老師的推文說的觀念 11/25 17:28
果然我的bug出在recycleList的reset()裡面,我自作聰明把_nextList以後所有後面的 List delete掉了,現在問題解決了,非常謝謝樓上各位的洞見,真的真的非常感謝!! (今天總算能安眠了:D) ※ 編輯: cgl 來自: 140.112.25.106 (11/25 18:36)
34F:推 gamerred:回k大:感謝你的推文 但是我們在說的是MemRecycleList 11/25 20:31
35F:→ gamerred:MemMgr自己的member data當然只有non-pointer才會遞迴呼 11/25 20:32
36F:→ gamerred:叫destructor >_^b 11/25 20:32
37F:→ gamerred:FYI 使用delete 會呼叫那個被指向物件的destructor 11/25 20:34
38F:→ gamerred:免得換你沒聽懂我們的意思 11/25 20:34
39F:推 kickpp:我只是提出destructor兩種不同的想法 重複用的話就會有原po 11/25 21:26
40F:→ kickpp:的問題... 不過你這樣的推文態度只會讓大家不想回文罷了 11/25 21:27
41F:推 gamerred:對不起 因為我誤會以為你說我說錯了,剛好我確定我是對的w 11/25 21:36
42F:推 ric2k1:Good :) 大家 peace 11/25 21:37







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP