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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP