Win32的虚拟内存分配函数
Win32的虛擬內(nèi)存分配函數(shù)
虛擬內(nèi)存API是其他API的基礎(chǔ)。虛擬內(nèi)存API以頁為最小分配單位,X86上頁長度為4KB,可以用GetSystemInfo函數(shù)提取頁長度。虛擬內(nèi)存分配函數(shù)包括以下函數(shù):
- LPVOID VirtualAlloc(LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwAllocationType,
DWORD fdwProtect);
該函數(shù)用來分配一定范圍的虛擬頁。參數(shù)1指定起始地址;參數(shù)2指定分配內(nèi)存的長度;參數(shù)3指定分配方式,取值MEM_COMMINT或者M(jìn)EM_RESERVE;參數(shù)4指定控制訪問本次分配的內(nèi)存的標(biāo)識,取值為PAGE_READONLY、PAGE_READWRITE或者PAGE_NOACCESS。
- LPVOID VirtualAllocEx(HANDLE process,
LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwAllocationType,
DWORD fdwProtect);
該函數(shù)功能類似于VirtualAlloc,但是允許指定進(jìn)程process。VirtaulFree、VirtualProtect、VirtualQuery都有對應(yīng)的擴(kuò)展函數(shù)。
- BOOL VirtualFree(LPVOID lpvAddress,
DWORD dwSize,
DWORD dwFreeType);
該函數(shù)用來回收或者釋放分配的虛擬內(nèi)存。參數(shù)1指定希望回收或者釋放內(nèi)存的基地址;如果是回收,參數(shù)2可以指向虛擬地址范圍內(nèi)的任何地方,如果是釋放,參數(shù)2必須是VirtualAlloc返回的地址;參數(shù)3指定是否釋放或者回收內(nèi)存,取值為MEM_DECOMMINT或者M(jìn)EM_RELEASE。
- BOOL VirtualProtect(LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwNewProtect,
PDWORD pfdwOldProtect);
該函數(shù)用來把已經(jīng)分配的頁改變成保護(hù)頁。參數(shù)1指定分配頁的基地址;參數(shù)2指定保護(hù)頁的長度;參數(shù)3指定頁的保護(hù)屬性,取值PAGE_READ、PAGE_WRITE、PAGE_READWRITE等等;參數(shù)4用來返回原來的保護(hù)屬性。
總結(jié)
以上是生活随笔為你收集整理的Win32的虚拟内存分配函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis 缓存过期默认时间_Redis
- 下一篇: 以太网口差分电平_以太网物理层信号测试与