【发布时间】:2011-07-28 08:52:41
【问题描述】:
有人可以描述处理以下情况的正确方法是什么:
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");
}
现在 - 还好吗? (我怀疑是这样,但谁知道呢:)
P.S我确实意识到有一个更好的方法来做到这一点 - 使用 boost::scoped_array 或简单地 std::wstring,它允许调用的析构函数释放分配的内存,只是好奇。
【问题讨论】: