|
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。
|
|