整体思路跟 内存池 差不多;
对象池更灵活一些, 下面代码可以和内存池结合在一起使用;
对象池的大概样子:
对象池只是针对某一个特定的class使用
有一个基类: template <typename T, size_t count > class ObjectPoolBaseClass ;
任何想拥有池的class, 比如class A 只需继承 ObjectPoolBaseClass<A,100> 就有一个可容纳100个A对象的池;
class ObjectPoolBaseClass 内含有一个静态变量 ObjectPool instance(池), 这个静态变量管理的所有申请/释放工作;
由于是静态变量,因此只针对一个class
综上,要使用/实现一个对象池,3部曲:
1. 创建一个 template <typename T , size_t count > class ObjectPool 用于申请/释放内存块;
2. 创建一个 template <typename T, size_t count >class ObjectPoolBaseClass 作为基类, 任何一个自定义class 想拥有一个
独立的内存池,只需要继承他就可以, ObjectPoolBaseClass 内部含有一个ObjectPool的静态变量将管理所有的申请/释放
3. 自定义一个class 继承ObjectPoolBaseClass 即可使用;
下面代码中已经加了关键段,可用于多线程:
#include <iostream>
using namespace std;
//对象池 , T 用来计算类型大小, cou