除了std::make_shared()之外,C++20还引入了新的函数std::make_shared_for_overwrite():https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared
为什么旧的make_shared是不够的,在什么情况下需要使用新的功能?
发布于 2021-06-14 18:05:34
std::make_shared()值初始化它创建的对象,这可能是一个不必要的步骤,如果您打算稍后在这些对象上赋值。
std::make_shared_for_overwrite()默认初始化它创建的对象。
区别只对基本类型的(子)对象有影响,其中没有初始化器。
std::make_shared<int[1000][1000]>()将分配一百万个int,而std::make_shared_for_overwrite<int[1000][1000]>()将分配一百万个int
https://stackoverflow.com/questions/67968070
复制相似问题