Fread字节数限制

时间:2013-09-18 18:14:35

标签: c++ memory size fread

fread是否对一次可读取的字节数有限制? 或者我可以阅读任何我希望收取指针的尺寸? 例如,我可以使用fread读取50MB的文件,将其充电到char指针吗?

2 个答案:

答案 0 :(得分:4)

理论上,是的,它可以读取任意数量的字节,最大为size_t(这是一个unsigned int(在32位系统上大约为4GB)。但是,因为你的缓冲区将必须在一个连续的块中分配,一次读取一个大文件是不可行的,也是不可取的(对于大文件,你可能无法创建足够大的内存缓冲区来保存文件通常情况下,你将有一个较小的缓冲区并循环遍历文件,将其加载到内存中。

答案 1 :(得分:1)

在实践中,fread()在50MB文件中没有任何问题。根据现代标准,这并不是一个“大文件”。 fread()返回读取的项目数,并保证仅在文件结束时返回短项目计数(如果您要求的项目多于文件中的项目)或错误。您必须检查返回的项目数是否符合预期,如果很短,请使用feof()ferror()来区分EOF和错误。