////////////////////////////////////////////////////////////////////////////// //文件 MemAlloc.h //主要功能: // //程序编写: 2005-12-07 ///////////////////////////////////////////////////////////////////////////// #pragma once #define ALLOC_MODE_GlobalAlloc 1 //使用GlobalAlloc申请内存 #define ALLOC_MODE_VirtualAlloc 2 //使用VirtualAlloc申请内存 #define ALLOC_MODE_MemMapping 3 //使用内存映射申请内存 #define ALLOC_MODE_malloc 4 //使用malloc分配内存 #include "FileMapping.h" class CMemAlloc { public: CMemAlloc(void); virtual ~CMemAlloc(void); BOOL AutoAlloc(UINT nMemSize); //根据需要自动选择一种方式进行内存申请,不成功时自动换另一种 BOOL Alloc(UINT nMemSize, DWORD nMode); //内存申请 BOOL ReAlloc(UINT nMemSize); //内存重新申请 void Empty(void); //内存释放 BOOL IsEmpty(void); UINT GetSize(void); void* MemoryLock(void); void MemoryUnlock(void); HANDLE GetMappingHandle(void); DWORD GetAllocMode(void); HBITMAP CreateBitmap(CSize csImageSize, int nBPP, BOOL bAutoAlloc); //bAutoAlloc=TRUE时,自动调用AutoAlloc分配内存 protected: void Free(void); //内存释放 UINT m_nSize; //内存大小 HANDLE m_hHandle; //内存句柄 LPVOID m_pMemory; //仅在使用GetMemPointer时才不为空 DWORD m_nAllocMode; //仅为了内存映射 CFileMapping* CreateMemMapping(LPCTSTR lpMappingName, SIZE_T nMappingSize); CFileMapping* m_pMemMapping; };