我使用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