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

📄 memory.h

📁 一个更为先进的嵌入式操作系统.采用RMS线程调度算法,具有信号量等同步对象.亦包括GUI. 通过该系统您可以极大知道Windows的内部秘密.
💻 H
字号:
#ifndef _GOS_MEMORY_H_
#define _GOS_MEMORY_H_

#define ZeroMemory(pDest,nLength) FillMemory(pDest,nLength,0)
#define AllocSize(pBlock) (*(PDWORD(pBlock)-1))
#define _msize(pBlock) (pBlock?AllocSize(pBlock):0)
#define malloc(size) g_pKernel->GetCurHeap().Alloc(size)
#define realloc(memblock,size) g_pKernel->GetCurHeap().ReAlloc(memblock,size)
#define free(memblock) g_pKernel->GetCurHeap().Free(memblock)
#define memmove(dest,src,count) CoyMemory(dest,src,count)
#define memcpy(dest,src,count) CoyMemory(dest,src,count)
#define memset(dest,c,count) FillMemory(dest,count,c)
#define IsWritablePtr(ptr) g_pKernel->GetCurHeap().IncludePtr(ptr)
#define PAGESIZE 4096
#define PAGESHIFT 12

PVOID operator new(UINT nSize,PVOID pObj);
VOID operator delete(PVOID pData,PVOID pObj);
PVOID operator new[](UINT nSize);
VOID operator delete[](PVOID pData);
PVOID operator new(UINT nSize);
VOID operator delete(PVOID pData);

class CHeap
{
public:
	void Create(PVOID pBlock);
	PVOID Delete();
	PVOID Alloc(DWORD nSize);
	PVOID ReAlloc(PVOID pBlock,DWORD nSize);
	void Free(PVOID pBlock);
	BOOL IncludePtr(PCVOID pBlock);
	DEBUG_ONLY(DWORD m_nPushCnt);
public:
	static ElementCount(int nElementBytes,int nCount,int nReservedBytes=0);
private:
	PDWORD m_pHeap;
	PDWORD MergeBlock(PVOID pBlock,DWORD nGroup,PDWORD pToGroup);
	void SplitBlock(PVOID pBlock,DWORD nGroup,DWORD nToGroup);
	PVOID PageAlloc(PVOID pBlock,DWORD nSize);
	void PageFree(PVOID pBlock,DWORD nSize);
	void ChainPush(PDWORD pBlock,DWORD nGroup);
	PDWORD ChainPop(DWORD nGroup);
	static DWORD Group(DWORD nSize);
};

void CopyMemory(PVOID pDest,PCVOID pSrc,DWORD nLength);
void FillMemory(PVOID pDest,DWORD nLength,BYTE nFill);

#endif //_GOS_MEMORY_H_

⌨️ 快捷键说明

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