如果抛出std :: bad_alloc,new会将指针设置为NULL吗?

Pub*_*bby 2 c++ null allocation new-operator bad-alloc

如果失败,我知道做一个new(std::no_throw)会设置指针NULL.我也知道普通newstd::bad_alloc在失败时抛出异常.

如果它抛出,法线new还会设置指针NULL吗?或者我应该将其设置NULLcatch()块?

And*_*ite 6

在C++中,bad new会抛出一个异常(除非你使用std :: nothrow)并且指针不会被分配,因此它将是new调用之前的任何内容.

但是,您可能对这篇文章感兴趣,该文章讨论了new如您在问题中提到的那样强制在失败时返回null.