构建组件的数据池

时间:2011-08-18 19:13:23

标签: c++ stl components memory-management memory-pool

我正在使用Core Duo运行Windows 7。我一直在使用Codeblocks,我认为我已经使用了GNU编译器。

我有(或将有)许多继承自抽象类Component的组件类。我需要帮助建立一个系统来容纳不确定数量的组件类型的内存池,每个组件类型都有不确定数量的组件。也许为了论证,后者是固定的,我可以弄清楚如何在绝对必要时改变大小。

另外,方便的是,每个组件类型都有一个从0到任何无孔的ID(unsigned short)。好极了!

所以,假设我有一些管理文章以跟踪数组大小和事物,这样的工作会不会有效?

class Component {};

class FooComponent: public Component {};
class BarComponent: public Component {};
.
.
.

std::vector<Component*> pool_list;

// returns pointer to beginning of pool
Component* foo_pool = MethodToCreateComponentPool(/* Params */)
Component* bar_pool = MethodToCreateComponentPool(/* Params */)

pool_list.push_back(foo_pool);
pool_list.push_back(bar_pool);

也许把sizeof(FooComponent)放进Params。

然后(我真的开始不知道该做什么)在函数内做malloc( START_COUNT * component_size)

我没有像这样分配内存的经验。我可以轻松设置类似

的内容

vector< vector<Component*>* >
map<unsigned short, vector<Component*> >

但它(对于一个人来说难看)并没有给我连续的池。我需要缓存友好:)

想法?模式?成语?帮助

1 个答案:

答案 0 :(得分:0)

我已经完成了如何实现这一点并且忘记了我真正需要的东西。这基本上是this post

感谢。