【发布时间】:2013-11-27 00:42:26
【问题描述】:
我遇到了 std::list 的问题。
std::list<Component*> mComponents;
//add some pointer in it
Component * comp = getComponent("positionComponent");
mComponents.remove(comp);
由于某种原因,它调用了 comp 指针的析构函数但没有删除它;通过析构函数删除的项目将被删除,而列表中的所有其他项目保持不变。什么会导致这种行为?
【问题讨论】:
-
指针的析构函数什么都不做...
-
Remove 不会从列表中删除项目:stackoverflow.com/questions/799314/…
-
不确定你说它调用析构函数但不删除它是什么意思...它调用
Component::~Component(),但不释放内存?这段代码不应该调用Component::~Component(),因为它不会破坏Component,只是破坏Component*。 -
@VladimirM
std::list::remove确实删除一个元素;我认为您指的是std::remove通用迭代器算法。 -
我认为这是我在编程中看到的最奇怪的事情。我认为 XCode 有问题,因为我整天都在不停地使用它。