我最近正在处理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
。只要确保捕捉到异常并正确处理即可。