作者yea107 (ㄚ隆)
看板EE_DSnP
标题[问题]memMgr里的reset()
时间Fri May 8 08:45:48 2009
为什麽我在这里只要想要
delet最刚开始做出来的MemBlock就会跑出
*** glibc detected *** free(): invalid pointer: 0x09446c18 ***
已经终止
(delet後来做出来的就没事)
而且我一开始什麽都不做在程式一开始时第一次输入mtr
block remainFreeSize 就会变得非常大
感觉似乎是 _ptr 或是_begin指到了奇怪的地方
(虽然我只是呼叫 _activeBlock->reset() 而已)
我想用cout大法印出 _ptr的位置 和 _begin的位置
也是马上crach
感觉一开始在 memMgr 的 constructor 做出来的 MemBlock有点神秘...
这样会是什麽问题呢??
感谢
----------------------------------------
最近习惯看日出....
----------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.43.124.54
1F:→ uxijgil:MemBlock只传 _nextBlock 跟 _blockSize 不传也没关系 05/08 09:08
※ 编辑: yea107 来自: 115.43.124.54 (05/08 09:19)
2F:→ yea107:不太懂楼上的意思耶@@ 05/08 09:20
3F:推 yangjiunru:_ptr和_begin是char*, cout会dereference他 05/08 11:26
4F:→ yangjiunru:所以会crash 05/08 11:26
5F:→ yea107:那为什麽想要delete最初的MemBlock会crash呢?? 05/08 12:35
6F:推 Hrothgar:感觉会不会是reset recycleList的时候,多delete一个 05/08 13:12
7F:推 ric2k1:原来是 for (int i = 0; i <= 256; i++) _recycleList.rese 05/08 18:03
8F:→ ric2k1:t() 的问题... 05/08 18:03
9F:→ yea107:谢谢老师~~ 05/08 23:06