You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinGW GCC编译下fwrite写入超4GB大缓冲区失败问题

MinGW x86_64-w64-mingw32-gcc编译下fwrite写入大数组异常卡住问题

尝试将8GB的uint64_t数组写入文件时,遇到以下异常:

  • 使用MinGW的x86_64-w64-mingw32-gcc编译程序后,fwrite仅写入约290MB(305,131,520字节)就卡住,此时CPU满负载但磁盘无读写活动,只能手动终止程序。
  • 改用Visual Studio编译相同代码,可正常写入完整数组。

测试验证:

  • 当数组元素数超过536,870,912(对应4GB数据量)时,问题必现。
  • 升级GCC至13.2.0版本后,问题仍未解决。

不同元素数的测试结果如下:

numItemsbytes writtenbytes expecteddistance to uint32.MAX + 1gets stuck?
200000000160000000016000000002694967296NO
400000000320000000032000000001094967296NO
536870911429496728842949672888NO
536870912042949672960YES
53687091304294967304-8YES
53687142440964294971392-4096YES
6000000005050327044800000000-505032704YES
100000000037050327048000000000-3705032704YES
107374182242949632008589934576-4294967280YES
107374182342949632008589934584-4294967288YES
107374182408589934592-4294967296YES
1073742336409685899386884294971392YES
11118836243051315208895068992-4600101696YES

推测:fwrite内部可能使用了32位变量,导致处理超过4GB的数据时出现溢出或死循环。请问是否有人能复现该问题?

内容的提问来源于stack exchange,提问作者MrPuzzler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:07:18