【发布时间】:2015-11-08 13:41:43
【问题描述】:
以下对 VirtualAlloc() 的调用在 x64 上返回错误 ERROR_INVALID_PARAMETER:
LPVOID lp = VirtualAlloc(NULL, 0x10000000000, MEM_RESERVE, 0);
也就是说,我必须使用PAGE_NOACCESS 作为VirtualAlloc 的最后一个参数。但是当我查看PAGE_NOACCESShere的定义时,我发现:
禁用对页面已提交区域的所有访问。一种尝试 读取、写入或执行已提交的区域会导致 访问冲突。
这与在进程虚拟地址空间中保留一系列地址无关。
当 flAllocationTime = MEM_RESERVE 时,flProtect 等于 PAGE_NOACCESS 的要求似乎在 MS 文档中完全缺失。有人可以证实这一点吗?
【问题讨论】:
标签: windows winapi memory-management