首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问内存池的处理有关问题,一般可以为每种类型给一个静态的内存池静态成员…

2012-02-04 
请教内存池的处理问题,一般可以为每种类型给一个静态的内存池静态成员……内存池的处理问题:一般可以为每种

请教内存池的处理问题,一般可以为每种类型给一个静态的内存池静态成员……
内存池的处理问题:
一般可以为每种类型(比如class   A)定义一个静态的内存池成员(static   pool   alloc;),然后重载operator   new   和operator   delete。问题是这样处理后,不管在什么地方(什么模块)使用到该类型(class   A)时,所有的动态对象都是调用重载后的operator   new从同一个内存池里分配。
        现在,如果我在class   B中有一个成员A   *m_pA;其中m_pA为一个链表,每个节点都动态分配,而我希望每个m_pA节点的内存都由pool管理,除了上面定义静态成员的做法之外,有什么别的更好的实现吗?

[解决办法]
你觉得上面方法不好的原因是什么?

可以专门定义一个类来管理内存。
[解决办法]
其实使用operator new/delete的主要目的是重用原来的new operator语法,改变new A的内存分配方式,这对class A的使用者可以是透明的。
现在你希望自定义部分A对象的内存分配方式,即是说你不需要改变系统内部的分配方式。那么可以直接写两个函数CreateA, DestroyA,用你愿意的方式创建/销毁A对象。

热点排行