预订地址空间区域
VirtualAlloc 预订进程中的地址空间区域,第二个参数类型是MEM_RESERVE
VirtualAllocExNuma 同上,区别在于应用程序在NUMA机器上运行
给区域调拨物理存储器
VirtualAlloc 调拨物理存储器,第二个参数是MEM_COMMIT
同时预订和调拨物理存储器
只调用VirtualAlloc一次,而不是上边的两次
PVOID pvMem = VirtualAlloc(NULL,99*1024,
MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
何时调拨物理存储器
使用虚拟内存,既能享受数组带来的快速访问,又能更好的节省存储器(像链表那样)
使用结构化异常处理方案决定何时调拨物理存储器(最佳方式)
撤销调拨物理存储器及释放区域
VirtualFree 撤销物理存储器或释放地址空间区域
需要注意何时撤销
改变保护属性
VirtualProtect 改变一个内存页面的保护属性
重置物理存储器的内容
VirtualAlloc 第三个参数传MEM_RESET
地址窗口扩展(AVE)
主要用于32位程序,64位程序的进程地址空间非常大,一般不用AVE
AVE使用流程如下:
Virtualalloc(NULL,1024*1024,MEM_RESERV|MEM_PHYSICAL,PAGE_READWRITE);//预订
AllocateUserPhysicalPages //分配物理存储器
MapUserPhysicalPages //把内存块指定给地址窗口
FreeUserPhysicalPages //释放内存块
VirtualFree //清理