По сути, я очень слабо пытаюсь централизовать управление памятью. В любом случае, boost :: pool использует куски определенных размеров.
Моя оригинальная идея состояла в том, чтобы перегрузить новое и удалить, передать размер в синглтон, который перешел бы в соответствующий пул повышения и выделил оттуда.
std::map<size_t, boost::pool<> > m_MemPools;
В любом случае мне кажется, что у меня не может быть карты пулов повышения, поскольку MSVC9 выдает мне следующую ошибку:
:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\map(173) : error C2512: 'boost::pool<>::pool' : no appropriate default constructor available
Почему это происходит?
EDIT
Я решил, я просто обернул его в shared_ptr, что решает проблему.
Просто чтобы показать что-то, я больше не использую [], и все равно выдает эту ошибку,
class Pooly
{
public:
Foo()
{
}
void RegisterPool(__in const size_t poolSize)
{
if(pools.find(poolSize) == pools.end())
pools.insert(std::make_pair(poolSize, boost::pool<>(poolSize)));
}
private:
std::map<size_t, boost::pool<> > pools;
};
Я предполагаю, что это связано с std :: make_pair?
Etherway, оборачивая его умным указателем, работает нормально, разве это не должно быть чем-то, что должно быть включено в пул повышения мощности?