gpt4 book ai didi

c++ - 使用 make_shared 和 make_unique 时需要检查 nullptr 吗?

转载 作者:可可西里 更新时间:2023-11-01 17:43:51 32 4
gpt4 key购买 nike

如果我使用 make_sharedmake_unique 创建指针,我是否必须检查它是否为 nullptr,例如:

std::unique_ptr<class> p = std::make_unique<class>();
if (p == nullptr)
{
....
....
}

如果您真的内存不足,std::make_unique 将通过预期。所以你永远不会从 std::make_unique 得到空指针。这是正确的吗?

所以在执行 make_sharedmake_unique 时不需要检查 nullptr 吗?

最佳答案

来自 std::make_unique 上的 cppreference (类似于 std::make_shared):

Exceptions

May throw std::bad_alloc or any exception thrown by the constructor of T. If an exception is thrown, this function has no effect.

“这个函数没有效果”特指它不返回任何东西,因为异常处理机制启动了。所以是的,你的假设是正确的。 std::make_unique 中的错误处理由异常完成,返回值永远不会是 nullptr

关于c++ - 使用 make_shared 和 make_unique 时需要检查 nullptr 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089737/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com