我正在使用 64 位 mingw 在 windows x64 上编译 c 代码。我正在使用 fwrite 从内存数组创建二进制文件。我想写 ~20Gb 调用这个函数,但它只是写到 1.4~1.5gb 然后它停止写入(没有崩溃,只是挂在那里......什么都不做)。有什么解决办法吗?现在我正在写 20 个文件,然后我合并它们。将文件作为“ab”打开可以工作,但如果我使用该模式,我将无法正确读取文件。
示例(伪)代码:
short* dst= malloc(20GB);
*calculations to fill dst*
file=fopen("myfile",'wb');
fwrite(dst, sizeof(short), 20GB/sizeof(short), file);
fclose(file)
Run Code Online (Sandbox Code Playgroud)
该程序永远不会结束,文件大小永远不会超过 1.5GB