有人可以描述处理以下情况的正确方法是什么:
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
,它允许调用的析构函数释放分配的内存,只是好奇。