LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 284|回复: 0

分配失败行为

[复制链接]
发表于 2024-2-4 23:25:53 | 显示全部楼层 |阅读模式
C++ 标准库中的 new 函数支持自 C++98 以来在 C++ 标准中指定的行为。 如果分配请求的内存不足,operator new 会引发 std::bad_alloc 异常。

较旧的 C++ 代码会为失败的分配返回 null 指针。 如果你的代码需要非引发版本的 new,请将程序链接到 nothrownew.obj。 nothrownew.obj 文件将全局 operator new 替换为分配失败时返回 nullptr 的版本。 operator new 不再引发 std::bad_alloc。 有关 nothrownew.obj 和其他链接器选项文件的详细信息,请参阅链接选项。

不能将检查全局 operator new 异常的代码与检查同一个应用程序中的 null 指针的代码混合使用。 但是,仍可以创建不同行为的类本地 operator new。 这种可能性意味着编译器在默认情况下必须以防御方式行事,并在 new 调用中包含对 null 指针返回的检查。 有关优化这些编译器检查的方法的详细信息,请参阅 /Zc:throwingnew。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表