c++ - Visual C++6 MFC MapViewOfFile 返回错误代码 8

标签 c++ mfc visual-c++-6 pagefile file-mapping

我有一个正在创建 map 文件的程序,它能够很好地调用 m_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);,但是当随后对 MapViewOfFile(m_hMap,dwViewAccess,0,0,0) 的函数调用,我得到错误代码 8,即 ERROR_NOT_ENOUGH_MEMORY,或错误字符串“error 存储空间不足,无法处理此问题命令”。

所以我不完全理解 MapViewOfFile 为我做了什么,以及如何解决这个问题。

一些数字...

m_dwMapSize = 453427200
dwProtect = PAGE_READWRITE;
dwViewAccess = FILE_MAP_ALL_ACCESS;

我认为我的页面大小是 65536

最佳答案

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

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

关于c++ - Visual C++6 MFC MapViewOfFile 返回错误代码 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573668/

相关文章:

c++ - 如何将 CString 转换为 VT_ARRAY|VT_UI1

mfc - 升级后的MFC应用程序看起来仍然很旧

C++ 参数类型转换

c++ - Qt - 编写一个多 TCP 服务器程序

c++ - Cuda 编程中的主动扭曲

c++ - TCHAR 数组在反斜杠后追加 w

C++将两个不同类型的 vector 的属性连接到新 vector 中

c++ - 如何使用 CreateFile API 打开分区?

c++ - 如何让 ToolTip 出现在 float 的 CPaneDialog 的最前面?