作者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