我有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的限制?
答案 0 :(得分:1)
效果怎么样?
void save(char f_name[], int size, float data[])
{
std::fstream f_bin(f_name, std::ios::out|std::ios::binary);
f_bin.seekp(std::ios::beg);
while (size > 0)
{
int amount = std::min(1000, size);
f_bin.write((char*)data, amount * sizeof(float));
data += amount;
size -= amount;
}
f_bin.close();
}