精華區beta EE_DSnP 關於我們 聯絡資訊
我跑老師的 do1 執行到第16行 (mtd -r 8 -a) 卻出現 mtest> mtd -r 8 -a Calling freeArr...(0x954ed80) >> Array size = 1 Recycling 0x954ed80 to (1) Calling freeArr...(0x954ef50) >> Array size = 156561104 Recycling 0x954ef50 to (156561104) Calling freeArr...(0x954ee10) >> Array size = 1 Recycling 0x954ee10 to (1) Calling freeArr...(0x954ec7c) >> Array size = 1 Recycling 0x954ec7c to (1) Calling freeArr...(0x954eed0) memTest: memMgr.h:319: size_t MemMgr<T>::getRecycleIdx(size_t) const [with T = MemTestObj]: Assertion `t >= ((sizeof(T) + (sizeof(size_t) - 1)) / sizeof(size_t) * sizeof(size_t))' failed. 我不知道156561104是哪來的? 而在前面的指令中 mtest> mtn -a 5 3 Calling allocArr...(64) Calling MemMgr::getMem...(64) New MemBlock... 0x954ee38 Memory acquired... 0x954eed0 Calling allocArr...(64) Calling MemMgr::getMem...(64) New MemBlock... 0x954eef8 Memory acquired... 0x954ef50 Calling allocArr...(64) Calling MemMgr::getMem...(64) New MemBlock... 0x954ef78 Memory acquired... 0x954efd0 下面節錄一些我的code void freeArr(T* p) { #ifdef MEM_DEBUG cout << "Calling freeArr...(" << p << ")" << endl; #endif // MEM_DEBUG ...... size_t n = *(int*)p; .... #ifdef MEM_DEBUG cout << ">> Array size = " << n << endl; #endif // MEM_DEBUG -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.248.149
BLD:我也不知道為什麼到0x954eed0就跳出去了 12/18 01:03
ric2k1:FYI, dec(156561104) = hex(954eed0)... 12/18 01:25
ric2k1:還有, array size = 1 也是怪怪的... 12/18 01:26
BLD:ㄚ阿 我底出來了 12/18 03:18