Почему деструкторы не вызываются автоматически для объектов, созданных с помощью оператора new, когда указатель выходит C++

Программы на C++. Форум разработчиков
Anonymous
Почему деструкторы не вызываются автоматически для объектов, созданных с помощью оператора new, когда указатель выходит

Сообщение Anonymous »

В своем коде я использую дополнительные скобки. Я подумал, когда следует вызывать деструктор после завершения области видимости локальной переменной, но это не работает так:

Код: Выделить всё

class TestClass {
public:
TestClass() {
printf( "TestClass()\n" );
}
~TestClass() {
printf( "~TestClass()\n" );
}
};

int main() {
int a, b, c;
{
TestClass *test = new TestClass();
}
}
Он выводит:

TestClass()

Значит, он не вызывает деструктор TestClass, но почему? Если я вызову его вручную (

Код: Выделить всё

delete test
) он вызывает деструктор, верно. Но почему в первом случае он не вызывает деструктор?

Подробнее здесь: https://stackoverflow.com/questions/180 ... th-the-new

Вернуться в «C++»