我正在使用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*> >
但它(对于一个人来说难看)并没有给我连续的池。我需要缓存友好:)
想法?模式?成语?帮助