这里提供一个简单线程安全内存池, 基于linux pthread 如下图:
具体的数据结构:
typedef struct LocMap{
char * point;
int len;
}LOCMAP;//每个数据块的起始指针和大小
int size; //内存池的大小
int datanum; //内存池内数据
int freemem; //剩余空间
std::vector<LocMap> memmap; //存储每个块结构
char *beginpoint; //内存池的起始地址
char *curpoint; //当前内存池空闲起开始地址
此内存池结构是一个栈结构存储数据,取出数据, 可支持自动扩增内存池空间。
源码 : https://github.com/BambooAce/Repository/blob/master/network/server_epoll/mem.cpp