请考虑以下代码段:
try{
LibObject* obj = new LibObject();
if (!obj)
return 0;
}catch(...){
return 0;
}
return 1;
我不知道LibObject的实现,因为它来自外部库。
一般来说,检查新对象实例(obj)是否为NULL可能有任何意义吗?或者支票根本没用?
新语句是否可以在不抛出异常的情况下返回NULL对象?
答案 0 :(得分:1)
LibObject* obj = new LibObject();
这里不要使用括号。如果你不想要alloc异常,你应该使用std :: nothrow
LibObject* obj = new(std::nothrow) LibObject;
if (obj == nullptr) return 0;
else return 1;
这是正确的语法。你可以在这里找到一个参考: