【发布时间】:2018-07-02 17:10:15
【问题描述】:
我正在调试一个依赖于 ~1GB 大文件的程序。我目前被困在没有 SSD 的低性能 PC 中。每次我在一些编辑后运行程序。这 1GB 已加载到内存中,这需要一些时间。
考虑到我从一开始就需要这个 1GB 的文件,并且无法从中加载我需要的内容。
是否有可能以某种方式(不必是标准的和可移植的)在内存中的某个位置仅加载一次,退出程序后不会被破坏,然后每次从内存中的同一位置使用它(一种指向操作系统级别的内存块的指针)?
我正在使用 MSVC 2017 和 Windows 10。
【问题讨论】:
-
从来没有做过这样的事情,但我想你可以有一个虚拟进程来保持文件处于活动状态,然后在构建后与你的程序共享它。似乎 boost 有一个可以用于此的库,请参阅here。
-
当您在 Windows 上时,如果您不介意使用不可移植的代码,Memory Mapped Files 非常适合这种用例。
-
@Humam Helfawi,可能与 stackoverflow.com/questions/34751873/how-to-read-huge-file-in-c 重复