我有一个正在创建 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/