c++ - 何时使用 std::make_shared_for_overwrite?

标签 c++ shared-ptr c++20

C++20 引入新函数 std::make_shared_for_overwrite()除了std::make_shared() :
https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared
为什么老 make_shared是不够的,在什么情况下需要使用新功能?

最佳答案

std::make_shared() value 初始化它创建的对象,如果您打算稍后为其分配值,这可能是不必要的步骤。std::make_shared_for_overwrite() default 初始化它创建的对象。
差异仅对没有初始化程序的基本类型的(子)对象重要。std::make_shared<int[1000][1000]>()将分配一百万并归零 intstd::make_shared_for_overwrite<int[1000][1000]>()将分配一百万 int

关于c++ - 何时使用 std::make_shared_for_overwrite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67968070/

相关文章:

c++ - 插入 int 集合时崩溃

c++ - 名称 `weak_ptr::lock()` 的原因是什么?

c++ - 在 main 函数调用期间使用 main 上面的模板类给出错误

c++ - C++11 std::function 是否限制函数指针可以具有的参数数量?

c++ - 了解预处理器指令

c++ - 包裹在共享指针中时的 vector 构造

c++ - 在 C++20 中从有符号整数到无符号整数,反之亦然

c++ - 使用 C++20 using-enum-declaration 进行二义性名称查找

cmake - 如何在Ubuntu 20上编译C++20 CUDA程序?

c++ - 有没有什么工具可以只翻译代码中的注释