You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//文件 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;
|
|
};
|