/** @file MemPool.h @brief 封装内存池
*	Copyright (c) 2007,第九城市游戏研发中心
*	All rights reserved.
*
*	当前版本:
*	作    者:张少东
*	完成日期:2008-01-20
*
*	取代版本:
*	作    者:
*	完成日期:
*/ #ifndef MEMPOOL_H #define MEMPOOL_H #include #include using namespace std; class CMemNode; class CMemPool { public: friend class CMemNode; CMemPool(size_t BufSize, size_t FreeBufNum); public: virtual ~CMemPool(void); public: CMemNode* NewMemNode(size_t BufSize = 0); //删除内存节点 void DestroyMem(CMemNode* pMemNode); //把内存节点放入池中 void ReleaseMemNode(CMemNode* pMemNode); private: //清楚所有内存节点 void Clear(); private: const size_t m_BufNum; //内存块数 const size_t m_BufSize; //每个内存块大小 list m_FreeMemNodes; //可用的内存节点 list m_ActiceMemNodes; //活动的内存节点 CRITICAL_SECTION m_cs; //线程同步 }; #endif