⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 automemmanager.h

📁 用FREE BASIC做的演示程序
💻 H
字号:
#ifndef BLUE_DREAM_AUTO_MEMORY_MANAGER_H_
#define BLUE_DREAM_AUTO_MEMORY_MANAGER_H_
#include<malloc.h>
class GSimpleAlloc
{
public:
	static inline void* Alloc(unsigned long dwSize)
	{
		return malloc(dwSize);
	}
	static inline void* Realloc(void*pBase,unsigned long dwSize)
	{
		return realloc(pBase,dwSize);
	}
	static inline void Dealloc(void*pBase)
	{
		if(pBase)		
			free(pBase);
	}
};
template<class GMemAlloc=GSimpleAlloc>
class GTAlloc
{
public:
	inline void*operator () (unsigned dwSize)
	{
		return GMemAlloc::Alloc(dwSize);
	}
};
template<class GMemAlloc=GSimpleAlloc>
class GTRealloc
{
public:
	inline void*operator () (void*pBase,unsigned dwSize)
	{
		return GMemAlloc::Realloc(pBase,dwSize);
	}
};
template<class GMemAlloc=GSimpleAlloc>
class GTDealloc
{
public:
	inline void operator () (void*pBase)
	{
		GMemAlloc::Dealloc(pBase);
	}
};
template<class TypeName,class GMemAlloc=GSimpleAlloc>
class GAutoMemManager
{
	typedef typename TypeName		DataType;
	typedef GTAlloc<GMemAlloc>		Alloctor;
	typedef GTRealloc<GMemAlloc>	Realloctor;
	typedef GTDealloc<GMemAlloc>	Dealloctor;
public:
	GAutoMemManager():m_pData(NULL),m_dwSize(0)
	{
	}
	virtual ~GAutoMemManager()
	{
		Dealloctor()(m_pData);
	}
	bool AllocMemory(unsigned long dwNewSize)
	{
		void*pTemp=Realloctor()(m_pData,dwNewSize);
		if(!pTemp)
			return false;
		m_dwSize=dwNewSize;
		m_pData=(DataType*)pTemp;
		return true;
	}
	inline DataType* GetData() const{return m_pData;}
	inline unsigned long GetSize() const{return m_dwSize;}
private:
	DataType		*m_pData;
	unsigned long	m_dwSize;
};
typedef GAutoMemManager<char> GFileData;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -