-2

我需要帮助弄清楚为什么这在 C 语言中不起作用。我的意图是像这样静态分配两个二维数组:

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

为什么这不起作用,它可以编译但在运行时它会中断说它是堆栈溢出?谢谢

PS为什么这个问题如此糟糕以至于你给出了一个缺点?

注意:通过在数组声明前添加静态来解决。 我会给建议这个解决方案的那个答案加分,尽管其他人是可能的,但我需要 [][] 注释。

4

1 回答 1

2

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

使用具有静态存储持续时间或更好的数组,malloc用于分配您的数组。

于 2013-02-17T22:07:11.313 回答