作者GriffeyKao (小龍)
看板EE_DSnP
標題Re: [問題] hw4 recyclelist
時間Sun May 4 10:58:38 2008
※ 引述《trancewu (exile me)》之銘言:
前面恕刪
我對於MemRecycleList內的reset有一個問題
void reset() {
if (_nextList) delete _nextList;
_first = 0; _nextList = 0;
}
_nextList指到的是一個MemRecycleList的物件
今天假設有三層
也就是另有Obj5[512],Obj6[512]
架構變成如下:
: _recycleList[0] -> MemRecycleList
: _arraySize = 0
: _first -> Obj1 -> Obj2
: _nextList -> MemRecycleList
: _arraySize = 256
: _first -> Obj3 -> Obj4
: _nextList -> MemRecycleList
: _arraySize = 512
: _first -> Obj5 -> Obj6
: _nextList -> null
那在執行 _recycleList[0].reset() 時
delete _nextList會把他指到的object歸還 也就是第二層
那第三層怎麼辦??
還是他會一直recursively call destructor??
煩請知道的人回答 謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.69.13
1F:推 bnsblue:在ref裡面好像會留著沒清 但是這樣會造成reset之後 05/04 11:59
2F:→ bnsblue:記憶體使用量並未有顯著減少 05/04 12:05
3F:→ bnsblue:如果要解決 我想不能用getList()去解決 因為這樣不會停 05/04 12:05
4F:→ bnsblue:所以應該是直接檢查_nextList是不是0來判斷 05/04 12:06
5F:推 bnsblue:可是我剛剛寫了之後還是不會減少多少orz 05/04 12:27
6F:推 danielko:在ref裡面如果delete之後再new同樣大小 05/04 22:14
7F:→ danielko:在list中的x不會變成o耶 會繼續留在本來的位置 05/04 22:14
8F:→ danielko:而o是加在list的後面...這樣算bug嗎?? 05/04 22:15
9F:→ danielko:但是recycle list中看確實是有用掉啦 05/04 22:15
10F:→ danielko:還有mtr之後看usage 記憶體好像沒被還回去耶 05/04 22:17