動的に割り当てられたクラスで例外をスローするとどうなるかについて、何人かの同僚と議論していました。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;
}
}
malloced memoryoはどうなりますか? リークしますか? CRT はコンストラクターの例外をキャッチし、メモリの割り当てを解除しますか?
乾杯!
リッチ