我遇到了std :: list的問題。std :: list.remove調用析構函數但不刪除它
std::list<Component*> mComponents;
//add some pointer in it
Component * comp = getComponent("positionComponent");
mComponents.remove(comp);
由於某種原因,它調用comp指針的析構函數,但不刪除它;通過析構函數刪除的項目被刪除,而列表中的所有其他項目保持不變。什麼會導致這種行爲?
指針的析構函數什麼也不做...... – aschepler
刪除不刪除列表中的項目: http://stackoverflow.com/questions/799314/difference-between-erase-and-remove – VladimirM
不知道你是什麼意思當你說它調用析構函數但不會刪除它......它調用'Component ::〜Component()',但不釋放內存?這段代碼不應該調用'Component ::〜Component()',因爲它不會銷燬一個'Component',只是一個'Component *'。 – filipe