Win32的虚拟内存分配函数
Win32的虛擬內存分配函數
虛擬內存API是其他API的基礎。虛擬內存API以頁為最小分配單位,X86上頁長度為4KB,可以用GetSystemInfo函數提取頁長度。虛擬內存分配函數包括以下函數:
- LPVOID VirtualAlloc(LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwAllocationType,
DWORD fdwProtect);
該函數用來分配一定范圍的虛擬頁。參數1指定起始地址;參數2指定分配內存的長度;參數3指定分配方式,取值MEM_COMMINT或者MEM_RESERVE;參數4指定控制訪問本次分配的內存的標識,取值為PAGE_READONLY、PAGE_READWRITE或者PAGE_NOACCESS。
- LPVOID VirtualAllocEx(HANDLE process,
LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwAllocationType,
DWORD fdwProtect);
該函數功能類似于VirtualAlloc,但是允許指定進程process。VirtaulFree、VirtualProtect、VirtualQuery都有對應的擴展函數。
- BOOL VirtualFree(LPVOID lpvAddress,
DWORD dwSize,
DWORD dwFreeType);
該函數用來回收或者釋放分配的虛擬內存。參數1指定希望回收或者釋放內存的基地址;如果是回收,參數2可以指向虛擬地址范圍內的任何地方,如果是釋放,參數2必須是VirtualAlloc返回的地址;參數3指定是否釋放或者回收內存,取值為MEM_DECOMMINT或者MEM_RELEASE。
- BOOL VirtualProtect(LPVOID lpvAddress,
DWORD cbSize,
DWORD fdwNewProtect,
PDWORD pfdwOldProtect);
該函數用來把已經分配的頁改變成保護頁。參數1指定分配頁的基地址;參數2指定保護頁的長度;參數3指定頁的保護屬性,取值PAGE_READ、PAGE_WRITE、PAGE_READWRITE等等;參數4用來返回原來的保護屬性。
總結
以上是生活随笔為你收集整理的Win32的虚拟内存分配函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis 缓存过期默认时间_Redis
- 下一篇: h5实现网页内容跟随窗口大小移动_HTM