Утечка памяти в пользовательском распределителе C / C ++ - PullRequest
0 голосов
/ 21 сентября 2011

Я создаю пользовательский распределитель памяти, как показано ниже:

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

Цель этого распределителя состоит в том, чтобы распределять память, выделяемую другим контейнером, и освобождать их только тогда, когда весь контейнер удален.поэтому я использую boost::shared_ptr.

Однако после запуска в VS2008 я обнаружил утечку памяти.Я не знаю почему.

Если я изменю boost::shared_ptr на MemoryChunks, утечка памяти исчезнет.

1 Ответ

0 голосов
/ 21 сентября 2011

Знаете ли вы, что распределители обрабатываются как не сохраняющие состояния в C ++ 03?Попробуйте использовать ваш распределитель в сочетании с Boost.Containers (он был только что принят, но я думаю, что они уже являются частью Boost.Interprocess), который уважает распределители.Нелегко сказать что-либо еще без определения для MemoryChunks.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...