Почему не вызывается деструктор без 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). Поэтому компилятор и не вставляет удаление.

Хотите удаление + кучу? используйте умные указатели.

https://en.cppreference.com/w/cpp/language/storage_duration

→ Ссылка