分割错误,大arrays
#include <stdio.h> #define N 1024 int main(){ int i, j; int a[N][N]; int b[N][N]; for (i=0;i<N;i++){ a[i][i]=i; b[i][i]=i; } for (i=0;i<N;i++) for(j=0;j<N;j++) { printf("%d", a[i][j]); printf("%d", b[i][j]); } return 0; } 这个程序是分段错误的原因,但是如果我将N定义为1023,程序将正常工作。 为什么会发生?
 你正在溢出堆栈。  2 * 1024 * 1024 * sizeof(int)对于大多数系统是很多的。 
 最简单的解决scheme是使数组static 。 
 static int a[N][N]; static int b[N][N]; 
其他方法:
- 使数组成为全局的(这与上面的基本相同)
- 
在循环中使用 malloc,当然记得freeint **a = malloc(N * sizeof *a); for (i = 0; i < N; i++) a[i] = malloc(N * sizeof *a[i]);