我创建了一个自定义内存分配器,如下所示:
class pool_allocator
{
// required methods
// ...
private:
boost::shared_ptr<MemoryChunks> m_t;
};
这个分配器的目的是共享由不同容器分配的内存,并且只在所有容器和删除时释放它们。因此,我使用boost::shared_ptr
。
然而,在VS2008中运行后,我发现内存泄漏。我不知道为什么。
如果我将boost::shared_ptr
更改为MemoryChunks
,内存泄漏就会消失。
答案 0 :(得分:0)
您是否知道在C ++ 03中分配器被视为无状态?尝试将你的分配器与Boost.Containers结合使用(它刚被接受,但我认为它们已经是Boost.Interprocess的一部分),它尊重分配器。如果没有MemoryChunks
的定义,就不容易说出其他任何内容。