std::shared_ptr 预分配内存

5
我想为控制块和shared_ptr的value_type一起预先分配内存(类似于std::make_shared),但不立即在其中构造任何对象。当我真正需要构造对象时,使用placement new。这是否可能? 无论是std::make_shared还是std::allocate_shared似乎都无法解决我的问题。

1
多态分配器可能是您正在寻找的 - 将来会出现在C++标准中。http://en.cppreference.com/w/cpp/experimental/lib_extensions - marko
1个回答

2
我建议创建一个延迟初始化的包装类,在其中包含足够的内存以供稍后初始化所需的对象使用。这个包装类甚至可以在析构函数中拥有专门用于调用就地构造和删除已初始化对象的特殊方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接