如何在没有内存错误的情况下读取堆中大文件的内容

时间:2017-01-30 18:13:32

标签: c

我提出的问题非常简单。让我们说我想读取一个大文件(6GB),而不会让堆耗尽内存。我该怎么做(我主要问的是,是否有一种方法可以读取文件的一部分,清除缓冲区并读取文件的下一部分)

1 个答案:

答案 0 :(得分:1)

内存容量和可用性取决于平台和操作系统。

某些操作系统允许内存映射一个文件,操作系统在其中管理将数据读入内存。

使用读取(c中的a.k.a. fread和C ++中的istream::read)可以完成无溢出读取。您告诉输入函数在块中读取多少,函数返回实际读取的数量。块大小应小于或等于为数据分配的内存。下一次读取将启动文件中的下一个位置。循环执行以读入所有数据。

此外,验证是否有理由同时将所有数据保存在内存中。大多数程序仅在有限的时间内保留一小部分数据。