0

次のようなカスタムメモリアロケータを作成します。

class pool_allocator
{
    // required methods
    // ...
private:
    boost::shared_ptr<MemoryChunks> m_t;
};

このアロケータの目的は、異なるコンテナによって割り当てられたメモリを共有し、すべてのコンテナが削除された場合にのみそれらの割り当てを解除することです。したがって、私はを使用しますboost::shared_ptr

しかし、VS2008で実行した後、メモリリークを検出しました。どうしてか分かりません。

に変更boost::shared_ptrするMemoryChunksと、メモリリークがなくなります。

4

1 に答える 1

0

C++03 では、アロケータがステートレスとして扱われることをご存知ですか? アロケーターを尊重する Boost.Containers と組み合わせてアロケーターを使用してみてください (受け入れられたばかりですが、既に Boost.Interprocess の一部になっていると思います)。の定義がなければ、他に何かを言うのは簡単ではありませんMemoryChunks

于 2011-09-21T05:32:18.733 に答える