精華區beta EE_DSnP 關於我們 聯絡資訊
就是老師的 ./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
colbylai:posts #252, 273, 295 12/17 04:19