【发布时间】:2015-11-29 23:26:37
【问题描述】:
我正在使用 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)
该程序永远不会结束,文件大小永远不会超过 1.5GB
【问题讨论】:
-
请出示您的代码。
-
我写了一个伪代码。告诉我它是否有帮助。
-
您是否尝试过附加调试器并检查调用堆栈?