c++ - 如何在 C++ 中的 new 失败时获得 0

标签 c++

如果我使用 foo = new int [5]; 并且如果分配失败,则会抛出异常, 我的问题是如何处理它或如果分配失败如何获得 0。以及它取决于 C++ 版本..

最佳答案

使用:

foo = new(std::nothrow) int[5];

它将返回 NULL出错而不是抛出。您可能需要添加 #include <new>得到 std::nothrow 的定义.

关于版本依赖,它很旧,我认为是从 C++98 开始的。如果您碰巧有一个较旧的编译器,比如 VisualStudio 6Turbo C,那么分配失败可能总是返回 NULL而不是首先抛出,因为 std::bad_allocstd::nothrow同时推出。

关于c++ - 如何在 C++ 中的 new 失败时获得 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26461117/

相关文章:

c++ - 内联 getter 和 setter 与公共(public)变量

c++ - 如何测试注册表项是否存在?

c++ - 我如何(安全地)中断单独线程上的计算?

c++ - boost::shared_ptr 的内容作为 set 的键?

c++ - 如何在cout中添加变量?

c++ - 编译extern "C"{...}时如何链接依赖?

c++ - 在主程序退出期间销毁等待 std::condition_variable 的线程的正确方法

c++ - int &a = b 在 C 4.8.1 中使 'a' 成为指向 'b' 的指针,但在 C 中却没有,为什么? (按引用调用)

c++ - C 链表 - 不允许指向不完整类的指针

c++ - 将当前日期精确到毫秒