作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] hw4 recyclelist
时间Sun May 4 23:04:52 2008
: void reset() {
: if (_nextList) delete _nextList;
: _first = 0; _nextList = 0;
: }
:
: 那在执行 _recycleList[0].reset() 时
: delete _nextList会把他指到的object归还 也就是第二层
: 那第三层怎麽办??
: 还是他会一直recursively call destructor??
: 烦请知道的人回答 谢谢!!
:
reset() 是由 destructor 呼叫的, 而 "delete _nextList" 的确是会
recursively call destructors!
: 推 bnsblue:在ref里面好像会留着没清 但是这样会造成reset之後 05/04 11:59
: → bnsblue:记忆体使用量并未有显着减少 05/04 12:05
用 "usage -m" 去测记忆体用量吗? 那是 report "peak" memory usage, 所以没差!
: → bnsblue:如果要解决 我想不能用getList()去解决 因为这样不会停 05/04 12:05
: → bnsblue:所以应该是直接检查_nextList是不是0来判断 05/04 12:06
if (_nextList) 就是了呀!
: 推 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
delete 之後再 new, x 当然不会变成 o 呀!
当初设计 _objList 就是要用来将每一个 new 的 pointer 记录下来,
後来 delete 才有 "variable" 可以 reference 来 delete.
这个不是 bug, 这是 feature...
: → danielko:但是recycle list中看确实是有用掉啦 05/04 22:15
: → danielko:还有mtr之後看usage 记忆体好像没被还回去耶 05/04 22:17
mtr 之後记忆体是有被还会去, 而且 _objList & _arrList 也被清乾净了,
只是 peak memory usage 不会变的.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.134.232