作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我问的问题非常简单。可以说我想读取一个大文件(6GB)而不用耗尽堆内存。我该怎么做呢。 (我主要问的是是否有一种方法可以读取文件的一部分,清除缓冲区并读取文件的下一部分)
最佳答案
内存容量和可用性取决于平台和操作系统。
某些操作系统允许内存映射文件,操作系统在其中管理将数据读取到内存中。
无溢出的读取是通过使用 block 读取(C 中的 fread
和 C++ 中的 istream::read
)来完成的。您告诉输入函数要在 block 中读取多少内容,该函数将返回实际读取的数量。 block 大小应小于或等于为数据分配的内存。下一次读取将从文件中的下一个位置开始。循环执行以读入所有数据。
此外,验证是否有理由同时将所有数据保存在内存中。大多数程序仅在有限的时间内保存一小部分数据。
关于c - 如何在没有内存错误的情况下读取堆中大文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41942698/
我是一名优秀的程序员,十分优秀!