作者geniusjazz (我个版开了!快来!)
看板EE_DSnP
标题[问题] 一些小问题
时间Sun Dec 17 04:13:10 2006
就是老师的 ./memTest 好像有点问题耶,
但是 ./memTest.debug 就没问题。
两个都输入mtr 50
mtn 5 -a 30
可是前者会出现奇怪的状况:
mtp
=========================================
= Memory Manager =
=========================================
* Block size : 50 Bytes
* Number of blocks : 6
* Free mem in last block: 50
* Recycle list :
[ 3] = 5
=========================================
= class MemTest =
=========================================
Object list ---
Array list ---
ooooo
完全不理解怎麽会变这样...
可是./memTest.debug打入一样的东西
才会出现比较合理的结果。
Calling allocArr...(364)
Calling MemMgr::getMem...(364)
Requested memory is greater than block size. Existing...
terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
已经终止
--
另外一个小问题…
在freeArr里面,有一个todo
// TODO
// 1. Get the array size 'n' stored by system,
// which is also the _recycleList index
// ==> assert(n == getRecycleIdx(n * S + SIZE_T));
可是我觉得这个assert是没有意义的啊。
因为无论如何一定成立,完全没有错的可能性啊.
--
再来一个问题,
老师的./memTest.debug去跑do4
最後会跑出完全看不懂的error...
--
还有想知道 memMgr.h 里面
最上面在define Macro的时候,
为甚麽每一行的最後面都有 "\"
不是很了解那个的作用...
--
最後还想知道。
在constructor里面
MemBlock(MemBlock<T>* n, size_t b) : _nextBlock(n) {
_begin = _ptr = new char[b]; _end = _begin + b; }
哪些data member要用 ....() 这种方式来initialize
哪些要在 { } 里面 initialize
--
感谢老师的回答orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.251.104
1F:推 colbylai:posts #252, 273, 295 12/17 04:19