Welcome

首页 / 软件开发 / C++ / 内存池的C++实现(可能还有小bug)

内存池的C++实现(可能还有小bug)2011-04-21 博客园 mini数据库最近在学习c++程序性能优化,读到内存池部分。自己动手写了一个,小小测试了一下应 该没有问题。

内存块MemoryBlock声明文件

MemoryBlock.h

#pragma once
#define USHORT unsigned short
#define ULONG unsigned long
#include <iostream>
using namespace std;
//内存块
struct MemoryBlock
{
USHORT m_nSize;//可分配内存总大小
USHORT m_nFree;//可分配内存单元数目
USHORT m_nFirst;//第一个可用的内存单元位置
MemoryBlock* m_pNext;//指向下一个内存块
char m_data[1];
void* operator new(size_t,const USHORT& sum,const USHORT& unit_size)
{
return ::operator new(sizeof(MemoryBlock)+sum*unit_size);//申请一 个内存块空间
}
void operator delete(void* del,size_t)
{
::operator delete(del);//删除内存块空间
}
MemoryBlock(const USHORT& sum,const USHORT& unit_size)
:m_nSize(sum*unit_size),m_nFree(sum-1),m_nFirst(1),m_pNext(0)
{
char* pData=m_data;
for(int i=1;i<sum;i++) //初始化1到sum-1指向
{
*reinterpret_cast<USHORT*>(pData)=i;
pData+=unit_size;
}
}
~MemoryBlock(){}

};