作者BLD ()
看板EE_DSnP
標題奇怪的bug
時間Mon Dec 18 00:47:22 2006
我跑老師的 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