我目前正在开发一个文本编辑器,理想情况下应该能够处理非常大的文件(理论上是16 eb)。我打算将内存映射文件用于文件管理部分。我在书中Windows via C/C++
阅读了一些有趣的例子。我的问题是:
我不太确定如何构建问题,所以如果你不明白我的意思,我会根据我得到的答案不断更新问题。
答案 0 :(得分:2)
根据MapViewOfFile的文档,dwFileOffsetLow
是:
视图要开始的文件偏移量的低阶DWORD。高偏移量和低偏移量的组合必须指定文件映射中的偏移量。它们还必须匹配系统的内存分配粒度。也就是说,偏移量必须是分配粒度的倍数。要获取系统的内存分配粒度,请使用GetSystemInfo函数,该函数填充SYSTEM_INFO结构的成员。
所以第一个问题的答案是肯定的。
你的第二个问题的答案也是肯定的。您可以创建同一文件的多个视图。
文章Managing Memory Mapped Files可能对您有用。
顺便说一句,如果你让你的文本编辑器达到可以测试的程度,我会非常有兴趣看到它。我一直对找到一个优雅地处理非常大的文件的编辑器或文本文件查看器感到绝望。有关一些想法,请参阅Large Text File Viewers和Designing a better text file viewer。