在C中静态分配2D数组,为什么它不起作用?

时间:2013-02-17 22:05:33

标签: c

我需要帮助弄清楚为什么这不适用于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来解决。 我会给出建议这个解决方案的答案,尽管其他的可能,但我需要[] []注释。

1 个答案:

答案 0 :(得分:2)

你有堆栈溢出。例如,在某些系统上,每个进程的堆栈大小设置为4 Mo. 4800 * 1200在这种情况下会过多(> 4 Mo)。

使用具有静态存储持续时间或更长时间的阵列,使用malloc分配阵列。