VirtualAlloc函数用法总结 预订 调拨

VirtualAlloc函数原型为

LPVOID VirtualAlloc(
LPVOID lpAddress, // region to reserve or commit
SIZE_T dwSize, // size of region
DWORD flAllocationType, // type of allocation
DWORD flProtect // type of access protection);

用于虚拟内存操作。是三种内存操作机制之一(其他两种分别人堆 和内存映射文件)。VirtualAlloc函数有两种用途第一种是在虚拟内存中预订区域,在用作这个的时候 第三个参数为MEM_RESERVE,如果想要从虚拟地址高处开始预订以防止内存碎片的话还要与上MEM_TOP_DOWN,此时注意,第一个参数要为NULL.

如果要为第一个参数指定开始地址,需要注意的是一定的起始一定要为颗粒的正数倍(64KB) 还需要注意 预订的大小要为页面大小的正数倍。当然你也可以不用严格按照这样来。系统会为你做的,他的做法是当你不是64 的倍数时开始地址会往下走到达64的倍数,当大小不是2的倍数的时候系统会扩充到4的整倍数。

 

这个函数的第二中功能是 为预订好的虚拟内存中也交换文件中分配物理存储器。此时第三个参数要为MEM_COMMIT,为了是CPU达到好的效率第四个参数,最好设成跟预订时一样的,当然不一样也没关系。

注意我们可以在预订的虚拟内存中部分调拨内存。这个时候开始地址和大小多要为页面大小的整倍数。不是也没关系,系统会帮你做的。原理跟上面一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值