我试图找出我是否愿意解决一个引起我兴趣的问题。为了解决这个问题,我需要创建一个多TB的二进制文件。如果我很幸运,这可以减少到大约300GB,这将是解决我的问题所需的最小内存。显然,数据不能保存在RAM中,所以我必须弄清楚如何以及何时写入(和读取)磁盘。
我想通常写入磁盘的方法是不可能的。当fstream
尝试将文件加载到内存中时,它会失败。有没有人知道(最好是便携式)技术,可以直接读写磁盘而无需先缓存(部分)数据?在我看来,我甚至可能不需要文件系统来执行此操作。我不能直接翻转磁盘上的位(不使用emacs'M-x butterfly
)?
答案 0 :(得分:3)
我认为内存映射文件(在64位系统上)正是您所需要的。
您只需将整个文件映射到内存中,并像普通数据结构一样对其进行操作;操作系统负责向/从内存加载和卸载数据。
这不是标准的C ++,但有一个Boost implementation可以在主要平台上运行。