我正在使用 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
我需要计算像这样存储的 2 个短数据数组的 FFT(重复数百万次):
等等。
数组值由黄色和蓝色表示。每个 K 值都有一个大小为 K 的未使用数据空间,我需要跳过。
我对数据进行了重新排序(和浮动转换)以消除无用的值,并使用 FFTW(带有 c)来计算所需的变换。
关于这个过程我有两个问题。