7

我正在编写一个 C++ 程序来读/写一个大文件(可能大于 60GB)。通过谷歌搜索问题,32 位系统中的文件 io 似乎有 2GB 的限制(我使用的是 windows 7 64 位,但我的程序是用 mingw32 编译的)。在我的程序中,我一次将 10 个整数写入文件,所有这些数字都是基于某种算法随机生成的。即使文件大小大于40GB,程序似乎也可以运行,但我无法检查程序读取的数据是否真的是存储在文件中的数据或一些垃圾号码。但无论如何,该程序不会报告任何警告或错误。这真的可以在 32 位程序中读取/写入大于 60GB 的文件吗?

4

1 回答 1

1

Fat32 文件系统的文件大小有限制(我认为最大为 4GB)。默认情况下,Windows 7 绝对不应该使用该文件系统。

同样在 32 位系统上,您可以使用CreateFileMapping /MapViewOfFile一次映射到内存中的文件大小有限制。但是,fstream 内部不使用 CreateFileMapping/MapViewOfFile,因此文件大小没有限制(除了文件系统限制)。即使使用 CreateFileMapping,您也可以将较大文件的一部分映射到内存中,因此除了文件系统施加的限制之外,没有其他限制。

于 2012-04-08T22:17:21.623 回答