c++ - 为什么按照 ISO C++ 避免在 new 之后检查 null

标签 c++ memory 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/

相关文章:

c++ - 传递对象成员函数作为参数(函数指针)

C++ 成员引用基类型 'int' 不是结构或 union

c++ - malloc 失败条件

c# - DataView 的 RowFilter 用于对象类型的 DBNull 值

python - 从文件中读取空终止(C 风格)字符串的简洁方法?

database - 如何在 MS Visual Studio 表格编辑器中将 NULL 输入数据库表格单元格?

c++ - 我正在创建一个双向链表,它将按字母顺序排列名称列表,但我不确定要在 int main() 函数中放入什么

c++ - linux/videodev.h : no such file or directory - OpenCV on ubuntu 11. 04

java - Enum 占用多少内存?

c++ - 获取内存区域的 "execute"权限