写二进制文件块

时间:2014-12-24 15:52:02

标签: c++ binaryfiles

我有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的限制?

1 个答案:

答案 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();
}