繁体   English   中英

写入二进制文件块

[英]Write binary file chunk

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

怎么样的效果

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM