有人能否描述一下处理以下情况的正确方式:
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");
}
现在 - 没问题吧?(我猜应该是,但谁知道呢 :)
附言 我确实意识到有更好的方法 - 使用boost::scoped_array
或者只使用std::wstring
,这样析构函数会被调用从而释放分配的内存,只是好奇。