我需要帮助弄清楚为什么这不适用于C语言。 我的目的是静态分配两个2D数组:
unsigned char raw_image2D[RAW_HEIGHT][RAW_WIDTH];
unsigned char raw_image2D_mirror[RAW_HEIGHT][RAW_WIDTH];
RAW_WIDTH和RAW_HEIGHT定义如下;
#define RAW_WIDTH 1600*3
#define RAW_HEIGHT 1200
为什么这不起作用,它编译但是在运行时打破说它是堆栈溢出? 谢谢
P.S。为什么这个问题如此糟糕以至于你给出了一个弊端?
注意:通过在数组声明前添加static来解决。 我会给出建议这个解决方案的答案,尽管其他的可能,但我需要[] []注释。
答案 0 :(得分:2)
你有堆栈溢出。例如,在某些系统上,每个进程的堆栈大小设置为4 Mo. 4800 * 1200
在这种情况下会过多(> 4 Mo)。
使用具有静态存储持续时间或更长时间的阵列,使用malloc
分配阵列。