【发布时间】:2015-12-18 00:21:31
【问题描述】:
CreateFileMapping 错误代码 8.没有足够的存储空间来处理这个命令。我正在尝试在 64 位 Win10 Visual C++ 上创建 4 Gb (0xFFFFFFFF) 的文件映射。
#define UBS_MEM_SIZE 0xffffffff
HANDLE hMapObject = CreateFileMapping(INVALID_HANDLE_VALUE, nullptr,
PAGE_READWRITE, HIWORD(UBS_MEM_SIZE), LOWORD(UBS_MEM_SIZE),
TEXT("dllmemfilemap"));
如何解决这个“ERROR 8”问题?
【问题讨论】:
-
您正在构建 64 位 exe 吗?
-
是的,我尝试构建 64 和 86,同样的错误。但这有关系吗?
-
是的,因为 32 位程序无法使用 4Gb。
-
您是如何确定 16GB(或 GiB?)的虚拟内存的?虚拟内存空间与安装的 RAM 不对应。也就是说,错误8是什么意思? VC IDE 带有一个错误查找工具,使用它来查找!另外,使用这种方法可以成功映射的最大尺寸是多少?
-
我的错,在 64 位中有 16 EB 的虚拟内存。
标签: c++ winapi memory file-mapping