<分区>
ISO C++ 说...
Fred * p = new Fred(); // No need to check if p is null
无需检查 p 是否为 null 为什么会这样?
<分区>
ISO C++ 说...
Fred * p = new Fred(); // No need to check if p is null
无需检查 p 是否为 null 为什么会这样?
最佳答案
原因是如果存在内存分配错误,这种对 new
的调用会引发异常。因此,在这样调用时,new
不会返回 NULL
/nullptr
。
如果你想让 new
返回 NULL
而不是抛出异常,你可以用 std::nothrow
调用它:
Fred* p = new (std::nothrow) Fred();
在这里,检查 NULL
/nullptr
是有意义的。
关于c++ - 为什么按照 ISO C++ 避免在 new 之后检查 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328675/