[英]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.