什么时候使用 std::make_shared_for_overwrite?
When to use std::make_shared_for_overwrite?
C++20 除了 std::make_shared()
之外还引入了新函数 std::make_shared_for_overwrite()
:
https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared
为什么旧的make_shared
不够用,什么情况下需要使用新的功能?
std::make_shared()
value 初始化它创建的对象,如果您打算稍后为其赋值,这可能是一个不必要的步骤。
std::make_shared_for_overwrite()
默认初始化它创建的对象。
差异只对基本类型的(子)对象有影响,那里没有初始化器。
std::make_shared<int[1000][1000]>()
将分配并清零一百万 int
s
std::make_shared_for_overwrite<int[1000][1000]>()
将分配一百万int
s
C++20 除了 std::make_shared()
之外还引入了新函数 std::make_shared_for_overwrite()
:
https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared
为什么旧的make_shared
不够用,什么情况下需要使用新的功能?
std::make_shared()
value 初始化它创建的对象,如果您打算稍后为其赋值,这可能是一个不必要的步骤。
std::make_shared_for_overwrite()
默认初始化它创建的对象。
差异只对基本类型的(子)对象有影响,那里没有初始化器。
std::make_shared<int[1000][1000]>()
将分配并清零一百万 int
s
std::make_shared_for_overwrite<int[1000][1000]>()
将分配一百万int
s