我有一个问题,我在任何地方都找不到答案。但是,我必须显示一些代码:
#include "Vector2D"
class something
{
Vector2D * p_Position;
public:
something(){p_Position = new Vector2D;}
~something(){delete p_Position;}
};
int main()
{
std::list<something> Somethinglist;
Somethinglist.push_back(something());
Somethinglist.clear();
return 0;
}
.clear()
因此,当涉及到函数时,这将导致断言失败。所以我尝试了一些东西。首先,如果我不将其delete p_Position
放入解构器中,则此代码完全可以工作。这是为什么?STL列表.clear()
功能会自动销毁动态指针吗?或者一个相当直接的问题:如何修复此代码?