我正在将一些代码从python移植到C。在我的C代码中,我需要定义一些固定大小的2D数组。到目前为止,我已经尝试了以下代码,但没有成功:
#include <stdio.h>
#include <complex.h>
#include <math.h>
#define N 1024
int main()
{
int aperture[N][N]; //Does not work on 2D arrays, but does with 1D arrays
float complex SLM[N][N];
return 0;
}
在哪里我得到一个分段故障错误。但是,如果我为行和列的数量定义一个不同的宏,就像这样,问题就会消失,代码也会完美地执行:
#include <stdio.h>
#include <complex.h>
#include <math.h>
#define N 1024
#define N_COLS 1024
int main()
{
int aperture[N][N_COLS];
float complex SLM[N][N_COLS];
return 0;
}
我不知道这种行为的原因是什么。你能帮我理解吗?如果有任何情况,我使用的是VSCode和gcc编译器。
正如退休忍者所建议的那样,数组似乎对堆栈来说太大了。将它们定义为全球性解决了这个问题。