我使用borland 2006 C++,并且有以下代码。我正在使用矢量,并且无法理解为什么析构函数没有被调用。stl向量内存管理
基本上我有一个A类
class A
{
private:
TObjectList* list;
int myid;
public:
__fastcall A(int);
__fastcall ~A();
};
__fastcall A::A(int num)
{
myid = num;
list = new TObjectList();
}
__fastcall A::~A()
{
delete list;
}
int main(int argc, char* argv[])
{
myfunc();
return 0;
}
void myfunc()
{
vector<A*> vec;
vec.push_back(new A(1));
vec.push_back(new A(2));
}
根据我读,变量时VEC在MYFUNC(),它应该破坏其所含元素,超出范围,从而对于A析构函数应该被称为。我在〜A()断点,但从来没有被调用,我已经尝试调整大小(),清除方法也
TIA
作为一个方面说明。不要尝试使用auto_ptr来在容器内使用指针时执行破坏。 Auto_ptrs无法在STL容器内使用,因为它们被复制的方式。 – 2009-06-17 19:45:43