make_shared是否可能没有任何异常,但返回一个nullptr



我最近正在处理shared_ptr的一个问题。我很好奇如果make_shared失败了,它会引发异常,对吗?是否存在make_shared返回nullptr但没有任何异常的情况?

来自文档:

std::make_shared

可能引发std::bad_alloc或的构造函数引发的任何异常T.

所以,如果从类的构造函数抛出异常,那么std::make_shared也会抛出它。除了构造函数抛出的异常外,std::make_shared还可以自己抛出std::bad_alloc异常。

因此,您不需要检查std::make_shared的结果是否为nullptr。只要确保捕捉到异常并正确处理即可。

最新更新