在C ++的工作草案中阅读。
T* p1 = new T; // throws bad_alloc if it fails
T* p2 = new(nothrow) T; // returns 0 if it fails
但是在new
运算符抛出的情况下(或0
的情况下返回new(nothrow)
)。
答案 0 :(得分:3)
在什么情况下[new]运算符抛出(或者在new(nothrow)的情况下返回0)?
当可用内存不足以分配对象时,
或者如果新对象的构造函数本身抛出异常
(在这种情况下,即使是新的非投掷变体也会抛出,
即。 nothrow只有内存问题)