新的(nothrow)运算符实际意味着什么,我们为什么要使用它?

时间:2014-03-21 17:58:12

标签: c++ visual-c++ new-operator

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

1 个答案:

答案 0 :(得分:3)

  

在什么情况下[new]运算符抛出(或者在new(nothrow)的情况下返回0)?

当可用内存不足以分配对象时,
或者如果新对象的构造函数本身抛出异常
(在这种情况下,即使是新的非投掷变体也会抛出, 即。 nothrow只有内存问题)