我正在微调一个小项目,并且我读到如果我尝试创建一个新对象,我会得到错误,如果它失败,它会返回一个错误(损坏的内存,内存不足?)。
所以我在想,在下面的行中:
Object* myObj = new Object();
在项目中通常是怎么做的?
Object* myObj;
try
{
myObj = new Object();
}
catch (std::bad_alloc&)
{
//Deal with the Error
}
或者...
Object* myObj = new (std::nothrow) Object();
if(!myObj)
{
//Deal with the Error
}
我假设#2 是最好的操作,因为尝试/捕获每一个新的似乎太多的开销。
只是想寻找所有新关键字并在各处添加错误检查是......令人沮丧。还有其他选择吗?或者某些选项将(std::nothrow)作为 new 的默认操作?