为什么如果我改变数组的某个维度的大小,我会得到一个运行时错误:“Segmentation Fault?”。例如:C -multidimensional array cause Segmentation Fault(GCC)
#include <stdio.h>
#define DIM 8
int main(int argc, char **argv)
{
int a[3][3][3][3][3][3][3][3][3][3][DIM],
b;
a[1][1][1][1][1][1][1][1][1][1][1] = 2;
b=a[1][1][1][1][1][1][1][1][1][1][1];
printf("%d \n",b);
return 0;
}
如果DIM是8它不会产生运行时错误,只是如果DIM大于8,它会导致运行时错误“段错误”。为什么?
但我需要11维数组和C有没有新的[]操作数 – psihodelia 2009-11-20 16:12:12
你的意思是使用malloc() - 这是一个C的问题,而不是C++。 – Ant 2009-11-20 16:12:13
@Ant:对不起,修正了它。 @Norma:你为什么首先需要这个?你可以模拟它(我会加入它),或者使用'int *******'......但是严肃地说你可能有一个设计缺陷。 – int3 2009-11-20 16:17:57