作者jane050177 (喵哩汪!!)
看板EE_DSnP
标题[问题] delete, destructor, reset() 的三角关系
时间Wed Nov 24 21:21:40 2010
不好意思有小问题想请教一下...
在 memMgr.h 里的 MemMgr::reset() 会需要 delete 到 MemBlock 的资料
而其中 MemMgr::reset() 又是由 MemMgr 的 destructor 所呼叫的
所以 当呼叫destructor 的时候
会呼叫到 reset()
然後又呼叫到delete
然後内部又会自己呼叫destructor.....
↑↑↑ 请问这是谁的destructor呢?
如果是呼叫 MemBlock的 感觉好怪 ><
如果是MemMgr的 那要怎麽运作才会recursively call destructor呢??QQ
好想知道这个问题噢~~~ 想到我肚子都饿了QQ
拜托大家了 谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.94.109
1F:推 timrau:delete a MemBlock当然就是呼叫MemBlock::~MemBlock() 11/24 21:38
2F:→ jane050177:QQ!!! 这样的话 那请问为什麽会recursively呼叫呢>"< 11/24 22:56
3F:推 ric2k1:只有 non-pointer type 的 data member 的 destructor 才会 11/24 23:21
4F:→ ric2k1:被 recursively 的呼叫哦! 如果是 pointer type, 除非你 11/24 23:22
5F:→ ric2k1:explicitly 去 delete 它, 否则它的 destructor 是不会被 11/24 23:22
6F:→ ric2k1:呼叫的。 这个观念跟今天花了不少时间在讲的 ListNode 的 11/24 23:23
7F:→ ric2k1:push_back()/pop_front()/destructor 很有关系哦! 11/24 23:23
8F:→ jane050177:谢谢教授! 终於懂了这些观念了~~ 也感谢T大! >\\\< 11/25 11:28