【发布时间】:2010-11-21 07:44:47
【问题描述】:
我正在与一些同事讨论当您在动态分配的类中抛出异常时会发生什么。我知道malloc 被调用,然后是类的构造函数。构造函数永远不会返回,那么malloc 会发生什么?
考虑以下示例:
class B
{
public:
B()
{
cout << "B::B()" << endl;
throw "B::exception";
}
~B()
{
cout << "B::~B()" << endl;
}
};
void main()
{
B *o = 0;
try
{
o = new B;
}
catch(const char *)
{
cout << "ouch!" << endl;
}
}
分配的内存 o 会发生什么情况,它会泄漏吗? CRT 是否捕获构造函数的异常并释放内存?
干杯!
丰富
【问题讨论】:
-
简短回答:是的。有关详细信息,请参阅 Cătălin Pitiş 答案。
标签: c++ exception constructor handler