std::shared_ptr 预分配内存

use*_*854 5 c++ memory-management placement-new shared-ptr c++11

我想既为控制块和预分配存储器value_type用于shared_ptr在一个堆请求(像std::make_shared),但不要在它立即构造的任何对象。当我实际上需要构造对象时,请使用 position new。是否可以?两者都没有std::make_sharedstd::allocate_shared似乎没有解决我的问题。

Geo*_*tov 2

我建议创建推迟初始化包装类,该类本身包含足够的内存供您稍后要初始化的对象使用。这个包装器甚至可以有特殊的方法来调用放置新的并删除析构函数中初始化的对象。