- 首先有个能创建固定长度的内存块的池
/// <summary>
/// 申请固定大小的内存池
/// 内部使用类,不考虑那些安全隐患的地方
/// 比如不用考虑归还的内存是否长度对应等
/// </summary>
class MyDogPoolFixSize
{
uint16 mNum;
int32 fixsize;
void* mPool;
public:
/// <summary>
/// fixs为固定内存大小
/// 最小为sizeof(void*) + 1
/// </summary>
MyDogPoolFixSize(int32 fixs);
~MyDogPoolFixSize();
/// <summary>
/// 创建cnt个内存放入池里
/// </summary>
void create(int32 cnt = 1);
/// <summary>
/// 申请内存
/// </summary>
vptr apply();
/// <summary>
/// 回收内存
/// </summary>
void free(vptr data);
/// <summary>
/// releasePro是每次release时的释放比例(百分比)
/// </summary>
void release(int8 releasePro = 60);
};
在这个基础上,对这些池进行管理,于是就有了
#pragma pack(push)
#pragma pack(1)
struct PoolConfItem {
uint32 fixsize;//用于MyDogPoolFixSize初始化
uint8 releasePro;//每次release时的释放比例(百分比)
uint16 releaseCD;//释放cd 秒