我有一个大问题。当我抛出异常或调用std :: terminate或std :: exit时,对象析构函数不会运行。这是问题,我的代码充满了这些语句,因为我认为这些语句正在调用析构函数。
我如何解决这个问题?我不能改变类的结构,我有10K的代码和许多类。
void Function(int Stage)
{
switch (Stage)
{
case 0:
//Somehow call the destructors
break;
case 1:
//initialize
break;
default:
//Give an error message and call the destructors
}
}
答案 0 :(得分:1)
析构函数应该在异常等时自动运行..这正是它们首先被发明的原因。
也许您使用new
创建了对象?在这种情况下,您需要显式delete
它们(然后运行析构函数)。