VirtualAlloc 方法


第 1 个参数 lpAddress 是输入参数,指定分配的起始位置。如果要保留一段内存区域,那么函数会将其自动向最近的一个分配粒度(一般为 64K)对齐。如果内存已经被保存并且打算将其提交,那么函数将会向最近的一个页面对其。如果设为 NULL ,那么系统将自行决定在什么地方分配。

第 2 个参数 dwSize 是输入参数,指定要分配的内存区域的大小。

第 3 个参数 flAllocationType 是输入参数,表示分配的类型,决定了是保留一段内存区域,还是提交,还是两者同时完成。如果设置为 MEM_COMMIT ,那么将提交内存页面;如果设置为 MEM_RESERVE ,那么将保留页面;如果设置为 MEM_COMMIT | MEM_RESERVE 那么将直接从空闲页面提交为 “已提交的” 页面。

第 4 个参数 flProtect 是输入参数,表示内存的属性,其值可以如下:

PAGE_NOACCESS : 拒绝访问。
PAGE_READONLY : 只读。
PAGE_READWRITE : 可读写。
PAGE_WRITECOPY : 只读 或 写时拷贝(copy-on-write)一个文件映射对象。
PAGE_EXECUTE : 该区域包含可执行代码,拒绝对该区域读写。
PAGE_EXECUTE_READ :该区域包含可执行代码,也可读该区域。
PAGE_EXECUTE_READWRITE : 该区域包含可执行代码,并且可读写。
PAGE_EXECUTE_WRITECOPY :该区域包含可执行代码,只读,或写时拷贝。

函数返回 LPVOID 类型,表示分配到的内存的起始地址。如果返回 NULL 则表示函数执行失败,可用 GetLastError() 获取错误信息。

转载于:https://my.oschina.net/Cosco/blog/333014

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值