Удалить вызывает деструктор - PullRequest
1 голос
/ 23 февраля 2012

Я динамически распределяю память для объекта, а затем, если я вызываю delete, что происходит? вызывается деструктор или функция удаления имеет другой способ обработки памяти?

Рассмотрим следующий пример:

class A 
{
 int x;
}

int main()
{
A *ptr = new A();
delete ptr;
return 0;
}

где деструктор называется?

Ответы [ 3 ]

4 голосов
/ 23 февраля 2012

Выражение с оператором удаления сначала вызывает соответствующий деструктор (если необходимо), а затем вызывает функцию оператора delete, чтобы освободить хранилище. Посмотрите здесь для деталей.

3 голосов
/ 23 февраля 2012

delete автоматически вызывает деструктор, а затем освобождает память.

0 голосов
/ 23 февраля 2012

Да, delete вызывает деструктор.

...