Вот и пробую сейчас вникнуть.
И это правильно
Без галки "Enable Exception handling" (/GX ) в процессе stack unwinding при возникновении C++ исключения, не будут уничтожены автоматические объекты.
И пример:
struct A
{
~A() | std::cout << "~A()\n"; }
};
void func()
{
throw 0;
}
void func2()
{
A a;
func(); // тут функция func() выкинет исключение и объект 'а' не будет уничтожен, т. е. не произойдет вызова ~A()
}
int main()
{
try
{
func2();
}
catch(int){}
return 0;
}
Установка опции GX заставляет компилятор вызывать деструкторы автоматических объектов при раскрутке стека.