1
現在我們必須創建class X
(作爲基類)和class Y
(如派生的)。它們都使用整數指針來保存不同大小的分配。虛擬解構器 - 內存泄漏
class X
{
int *p;
public:
X() {p=new int[2];}
~X() {delete[] p;}
};
class Y : public X {
int *q;
public:
Y() {q=new int[4];}
~Y() {delete[] q;}
};
而且,我們嘗試在一個簡單的循環:
for(int i=0;i<8;i++){X *ptr =new Y; delete ptr;}
是什麼原因導致內存泄漏那裏,我們能做些什麼來解決這個問題?
我相信術語 「析構函數」 是常用的,而不是 「解構」 – Slava
[**這個問題**](HTTPS:/ /stackoverflow.com/questions/461203/when-to-use-virtual-destructors)是何時/何處使用虛擬破壞者的近庫,這個問題的案例就是其中之一。 – WhozCraig
此代碼具有比內存泄漏更大的問題。 –