作者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