看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《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
bnsblue:在ref裡面好像會留著沒清 但是這樣會造成reset之後 05/04 11:59
bnsblue:記憶體使用量並未有顯著減少 05/04 12:05
bnsblue:如果要解決 我想不能用getList()去解決 因為這樣不會停 05/04 12:05
bnsblue:所以應該是直接檢查_nextList是不是0來判斷 05/04 12:06
bnsblue:可是我剛剛寫了之後還是不會減少多少orz 05/04 12:27
danielko:在ref裡面如果delete之後再new同樣大小 05/04 22:14
danielko:在list中的x不會變成o耶 會繼續留在本來的位置 05/04 22:14
danielko:而o是加在list的後面...這樣算bug嗎?? 05/04 22:15
danielko:但是recycle list中看確實是有用掉啦 05/04 22:15
danielko:還有mtr之後看usage 記憶體好像沒被還回去耶 05/04 22:17