【发布时间】:2015-02-22 17:10:01
【问题描述】:
我有 6GB 的可用物理内存。我正在处理一个大数据,大小约为 4GB。我刚刚意识到我无法以这种方式保存它,我曾经使用较小的数据(~1GB)来保存它:
void save(char f_name[], int size, float data[])
{
std::fstream f_bin(f_name, std::ios::out|std::ios::binary);
f_bin.seekg(std::ios::beg);
f_bin.write((char*)data, size*sizeof(float));
f_bin.close();
}
因为它将数据存储在内存中,并且需要相同数量的 RAM 才能将其写入 HD。有没有办法将 4GB 写入(例如 1GB)块中,所以它永远不会超过 6GB 的限制?
【问题讨论】:
-
我想知道是否需要相同数量的 RAM 是特定于平台的。
-
首先,我假设您使用的是 64 位平台?其次,物理 RAM 并不重要,因为操作系统会在需要时使用 HDD 来获取额外的虚拟内存。您使用的是什么操作系统?
-
我在 Cygwin_4.x-Windows 64bit 上
-
根据您生成数据的方式,内存映射文件可能适合您。
-
数据是一个扁平化的浮点数组
标签: c++ binaryfiles