【发布时间】:2013-03-12 12:08:35
【问题描述】:
我有一个正在创建地图文件的程序,它能够很好地调用 m_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);,但是当随后的函数调用 MapViewOfFile(m_hMap,dwViewAccess,0,0,0) 时,我得到一个错误代码 8,即 ERROR_NOT_ENOUGH_MEMORY,或错误字符串“错误没有足够的存储空间来处理此命令”。
所以我并不完全理解 MapViewOfFile 为我做了什么,以及如何解决这种情况。
一些数字...
m_dwMapSize = 453427200
dwProtect = PAGE_READWRITE;
dwViewAccess = FILE_MAP_ALL_ACCESS;
我认为我的页面大小是65536
【问题讨论】:
-
您要映射的文件有多大?
-
我假设您打算只映射文件的前 ~432MB,对吧?无论如何,您的进程是否有足够的虚拟内存来映射文件?默认情况下,32 位 Windows 上的限制为 2GB。
-
嗯,所以它似乎正在创建和销毁内存视图,并根据需要增长,如果它试图最终将整个内容加载到内存中,我不会完全感到惊讶。
标签: c++ mfc visual-c++-6 pagefile file-mapping