【发布时间】:2012-09-23 14:02:31
【问题描述】:
可能重复:
C programming, why does this large array declaration produce a segmentation fault?
我正在读取 c 语言中的图像,但我无法这样做,因为我的程序在两者之间停止...调试后我发现这是由于数组大小...对最大大小有任何限制吗?大批? 如果我声明大小为 1400X1400 的数组一切正常,但如果我定义大小为 1600X1400 的数组,我的程序将停止工作......为什么会这样......编译器或操作系统对数组大小有任何限制吗?如果是这样,c 中的解决方案是什么。
unsigned char idata[1400][1400]; //working fine
unsigned char idata[1600][1400]; //not working
【问题讨论】:
-
它停止工作或无法编译?
-
我认为编译器和设备是最可能的限制来源,我在 C 语言中从未遇到过这样的限制。我们很可能真的需要查看失败的代码——除非它根本没有编译。
-
size_t类型用于指定标准 C(1999 标准)中的最大对象大小(其中 byte =char)。size_t的最大值为SIZE_MAX(在<limits.h>中定义)。
标签: c arrays multidimensional-array