Почему не вызывается деструктор без delete?
Почему, если не указать delete x;, деструктор не будет вызван неявно в конце программы?
#include <iostream>
struct A {
A() { std::cout << '1'; }
~A() { std::cout << '2'; }
};
int main() { new A; }
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Деструктор вызывается для объектов, которые были созданы на стеке (static storage, если быть точнее). В Вашем случае объект создается в куче через new (dynamic storage). Поэтому компилятор и не вставляет удаление.
Хотите удаление + кучу? используйте умные указатели.