誰かが次の状況を処理する正しい方法を説明してください:
wchar_t* buffer = new wchar_t[...];
if (!something)
{
throw std::runtime_error("Whatever");
// Now, at this point I'm leaking memory allocated for the 'buffer'.
}
// Perform actions.
delete[] buffer;
それを解決する明白な方法は、次のようなことを意味します。
if (!something)
{
delete[] buffer;
throw std::runtime_error("Whatever");
}
さて~いいですか?(私はそう思うが、誰が知っているか:)
PS私はそれを行うためのはるかに良い方法があることを認識しています - を使用するboost::scoped_array
か、単純std::wstring
に、呼び出されたデストラクタが割り当てられたメモリを解放できるようにします。