我正在寻求实现一个(双重)链表,它只在内部调用placement new
,将所有内存定向到分配有类似以下内容的池:
char *memPool = new char[4096]; // One-off normal 'new'
最初我打算实现我自己的类,它需要一个指向(管理一个)预分配内存池的指针。但是,我想首先确定我无法使用std::list
. 特别是,大卫罗德里格斯对这个 SO 问题的回答的第三部分让我感到担忧。
std::list
必须在其组件节点上调用new
and是有道理delete
的,但我想修改此行为,以便将所有节点分配placement new
到我的自定义池中。因此我的问题是:
有没有办法指定一个placement new
std::list
如:
std::list<std::shared_ptr<Cls>> myList = new (pool.getFreeAddr()) list<Cls>;
还应该使用自定义分配器分配其节点,以便所有内容都严格存储在我自己的内存池中?
(注意:我知道shared_ptrs
如果我也想在自定义内存池中使用自定义分配/删除函数。)