【发布时间】:2012-06-01 20:55:30
【问题描述】:
假设我有:
class A {
public:
A(HWND hwnd, HWND hwnd2);
~A();
int i;
HWND hwndFrame;
HWND hwndCanvas;
bool bool;
};
class B {
public:
B(HWND hwnd);
~B();
HWND hwndFrame;
Vec<A *> vecA; // class Vec is implemented by someone else.
};
假设我已经创建了:
A * elementA1 = new A(...);
A * elementA2 = new A(...);
B * element B = new B(...);
B->vecA.Append(A1);
B->vecA.Append(A2);
在某个时候,我想删除所有上述对象(因此它们不再存在于内存中)。
我很困惑该怎么做。
我的问题是:
如果我把
delete hwndFrame放在析构函数~A();中,那么当我做delete A时,hwndFrame真的被删除了吗?在析构函数
~B()中,为了delete(从内存中)向量B->vecA及其元素指向的内容,即A1和A2指向。
【问题讨论】:
-
hwndFrame不是指针类型;你不能在上面调用delete...
标签: c++ pointers memory-management vector