Jit*_*ani 2 c fopen memory-management
我有一个巨大的二进制文件,是2148181087字节(> 2GB)
我正在努力,但fopen (file, "r")
它失败了
无法打开:xyz文件(值太大,无法存储在数据类型中)
当文件大小> 2gb时,我在手册页上看到EOVERFLOW错误.
奇怪的是,我使用了一个不同的输入文件,它"几乎"与第一个文件2142884400字节(也是> 2gb)一样大,fopen
可以正常工作.
文件大小是否有任何截止,fopen
或者有没有其他方法可以解决这个问题?
截止值为2GB,与您的想象相反,不是 2,000,000,000(2x1000 3).
这是2,147,483,648(2x1024 3).所以你的第二个文件的大小实际上小于2GB.
在计算机领域,2GB,在硬盘制造商的脑海中只有2,000,000,000,因此他们可以说他们的磁盘比实际大:-) - 它让他们说他们的磁盘实际上是2.1GB.
"解决此问题的替代方法"取决于您使用的操作系统/库.
对于GNU C库,您可以fopen64
用作替代fopen
; 它使用64位文件句柄(还有一个宏可以fopen
使用64位文件句柄).
对于Windows,您可能必须切换到可以使用的Win32文件管理API CreateFile
.
归档时间: |
|
查看次数: |
3427 次 |
最近记录: |