【Windows核心编程笔记】第十五章 在应用程序中使用虚拟内存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao3132453/article/details/90577937

预订地址空间区域

VirtualAlloc    预订进程中的地址空间区域,第二个参数类型是MEM_RESERVE

VirtualAllocExNuma      同上,区别在于应用程序在NUMA机器上运行

 

给区域调拨物理存储器

VirtualAlloc    调拨物理存储器,第二个参数是MEM_COMMIT

 

同时预订和调拨物理存储器

只调用VirtualAlloc一次,而不是上边的两次

PVOID pvMem = VirtualAlloc(NULL,99*1024,

MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);

扫描二维码关注公众号,回复: 6520096 查看本文章

 

何时调拨物理存储器

使用虚拟内存,既能享受数组带来的快速访问,又能更好的节省存储器(像链表那样)

使用结构化异常处理方案决定何时调拨物理存储器(最佳方式)

 

撤销调拨物理存储器及释放区域

VirtualFree 撤销物理存储器或释放地址空间区域

需要注意何时撤销

 

改变保护属性

VirtualProtect        改变一个内存页面的保护属性

 

重置物理存储器的内容

VirtualAlloc    第三个参数传MEM_RESET

 

地址窗口扩展(AVE)

主要用于32位程序,64位程序的进程地址空间非常大,一般不用AVE

AVE使用流程如下:

Virtualalloc(NULL,1024*1024,MEM_RESERV|MEM_PHYSICAL,PAGE_READWRITE);//预订

AllocateUserPhysicalPages //分配物理存储器

MapUserPhysicalPages        //把内存块指定给地址窗口

FreeUserPhysicalPages        //释放内存块

VirtualFree            //清理

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/90577937
今日推荐