如何在C++中使用new时失败0

Imr*_*han 1 c++

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

rod*_*igo 5

使用:

foo = new(std::nothrow) int[5];
Run Code Online (Sandbox Code Playgroud)

它将返回NULL错误而不是抛出.您可能需要添加#include <new>以获取定义std::nothrow.

关于版本依赖,它是相当古老的,我认为从C++ 98.如果你碰巧有一个较旧的编译器,比如VisualStudio 6Turbo C,那么分配失败总是会返回NULL而不是首先抛出,因为它们std::bad_alloc同时std::nothrow被引入.