メモリリーク。
AAA *p = NULL;
try
{
AAA *p = new AAA;
// 例外を throw する関数呼び出し
func_with_exception();
delete p;
}
catch(exception &)
{
if(p != NULL)
{
delete p
}
}
つまり p というポインタを例外ハンドラで削除しようということだが,p が try ブロックで再定義されている。ので,例外ハンドラで delete しようとする p は当然外の p なので,必ず NULL って感じで。2 日くらい気付かなかった。