进程的虚拟地址空间内存页面存在 3 种状态, 分别为空闲的 (free) 、 保留的(reserved)和提交的(Committed)具体见下表。大多数情况下,一页的大小是 4KB。
示例程序:
#include<windows.h>
#include<stdio.h>
int main(void)
{
SIZE_T sizeVirtual = 4000;
LPVOID lpRound = (LPVOID)0x100000FF;
MEMORY_BASIC_INFORMATION mbi;
LPVOID lpAddress = VirtualAlloc(
lpRound,sizeVirtual,
MEM_COMMIT | MEM_RESERVE,PAGE_READWRITE);
if(lpAddress == NULL)
{
printf("VirtualAlloc error: %d\n",GetLastError());
return 1;
}
printf("Alloc:MEM_COMMIT |MEM_RESERVE\n");
LPSTR szString= "Marry