0

我有一个正在创建地图文件的程序,它能够很好地执行该调用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

4

2 回答 2

1

如果文件非常大并且要读取它,建议将它分成小块读取,然后逐块处理。而 MapViewOfFile 函数用于在内存中映射一块。

看看http://msdn.microsoft.com/en-us/library/windows/desktop/aa366761(v=vs.85).aspx需要偏移量才能正确完成它的工作,即如果你想读取一个非常大的文件成片。主要是由于碎片和相关原因非常大的内存请求失败。

于 2013-03-22T15:25:15.127 回答
0

如果您正在使用 64 位处理器,那么系统将分配总共 4GB 内存,位设置为 LargeaddressAware。转到配置属性->链接器->系统。在启用 largeaddressware:检查是 /LARGEADDRESSAWARE 并检查。

于 2021-11-04T16:20:17.080 回答