Как я могу освободить память, хранящуюся для массива известного размера?Освобождение памяти из стека и кучи
Приведенный ниже код печатает 4 раза «конструктор»! но только однажды «Деструктор позвонил!» означает ли это, что память для всего массива была освобождена?
class Box
{
public:
Box() {
cout << "Constructor called!" <<endl;
}
~Box() {
cout << "Destructor called!" <<endl;
}
};
int main()
{
Box myBoxArray[4];
delete myBoxArray; // Delete array
return 0;
}
Однако, если я объявить myBoxArray
динамически, как показано в коде ниже, вызывается деструктор в 4 раза.
class Box
{
public:
Box() {
cout << "Constructor called!" <<endl;
}
~Box() {
cout << "Destructor called!" <<endl;
}
};
int main()
{
Box* myBoxArray = new Box[4];
delete [] myBoxArray; // Delete array
return 0;
}
Есть точка deallocating без динамически распределяемой памяти или лучше оставить его сборщиком мусора?
Ваш первый пример спортивного неопределенного поведения. Вы не можете вызывать 'delete' на том, что раньше не было' new'. – SergeyA
Нет сборщика мусора в C++ – Kamil