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