Теперь мы должны создать 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
Этот код имеет больше проблем, чем утечка памяти. –