内存管理类
来源:互联网 发布:天文望远镜知乎 编辑:程序博客网 时间:2024/06/05 05:59
#pragma once#ifndef GAME_MEMORYPOOL_H#define GAME_MEMORYPOOL_H// 类存管理template <class T, int ALLOC_BLOCK_SIZE = 50>class game_memorypool{private:static unsigned char *mFreePointer;protected:~game_memorypool(void){}public:// 重载newstatic void* operator new(std::size_t allocLength){assert(sizeof(T)==allocLength);assert(sizeof(T)>=sizeof(unsigned char*));if (!mFreePointer){allocBlock();}unsigned char *ReturnPointer = mFreePointer;mFreePointer = *reinterpret_cast<unsigned char**>(ReturnPointer);return ReturnPointer;}// 内存分配static void allocBlock(void){{mFreePointer = new unsigned char[sizeof(T)*ALLOC_BLOCK_SIZE];unsigned char **Current = reinterpret_cast<unsigned char **>(mFreePointer);unsigned char *Next = mFreePointer;for (int i=0; i<ALLOC_BLOCK_SIZE-1; ++i){Next+=sizeof(T);*Current = Next;Current = reinterpret_cast<unsigned char**>(Next);}*Current = 0;}}// 重载deletestatic void operator delete(void* deletePointer){*reinterpret_cast<unsigned char**>(deletePointer) = mFreePointer;mFreePointer = static_cast<unsigned char*>(deletePointer);}};template <class T, int ALLOC_BLOCK_SIZE>unsigned char* game_memorypool<T, ALLOC_BLOCK_SIZE>::mFreePointer = NULL;#endif
class game_input:public game_memorypool<game_input>
{
//............
}
- 内存管理类
- 动态内存管理类
- 稳健内存管理:自定义内存块管理类
- 容器类的内存管理
- 动态内存管理allocator类
- 13.5 动态内存管理类
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- web.xml之session-config、mime-mapping
- 北漂的程序员。
- STC89C58串口接收GPS信号(GPRMC)读取经纬度,时间。1604液晶(HD44780)显示
- 数据库操作
- java递归读取文件夹中的所有文件以及路径
- 内存管理类
- ASP.NET倒计时两种方式 使用Timer控件和JavaScript代码
- GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)
- jquery中hover()方法的学习
- Ogre笔记六:基础教程三—天空、地面和雾化处理
- 第16章 命令模式(Command Pattern)
- sql & t-sql & pl/sql 区别?
- Java递归删除文件夹中的所有文件
- 中国农历的算法(含周算法,节气,阴历与阴历对应)