【发布时间】:2015-08-17 16:56:31
【问题描述】:
运行良好
int GB = 2;
int bytes = GB * 1024 * 1024 * 1024;
LPVOID memory = VirtualAlloc(
0,
bytes-1, // 2GB - 1
MEM_COMMIT,
PAGE_READWRITE);
在这里,只要我达到 2GB,它就会失败
int GB = 2;
int bytes = GB * 1024 * 1024 * 1024;
LPVOID memory = VirtualAlloc(
0,
bytes, // 2GB
MEM_COMMIT,
PAGE_READWRITE);
带有 Windows 错误消息“参数不正确”。为什么会这样?其实我想分配更多的虚拟内存。
【问题讨论】:
-
我回滚了编辑,因为它改变了问题,并使答案无效(
int和long是不同的类型,即使在 LLP64 实现上的基本原理相同)。 -
对,这样可能更容易理解。
标签: winapi memory-management virtual-memory