大神求解,C语言,Unhandled exception

#include <stdio.h>
main()
{
FILE * fp=fopen("C:\\Users\\lenovo\\Desktop\\新建文本文档.txt","w");
int a[1000][1000],b[1000][1002],i,j,k,l;
// printf("输入原始数据0 or 1\n");
for(i=0,j=0;j<1000;j++)
{
a[i][j]=0;
}
a[0][499]=1;
b[0][0]=a[1][999];
b[0][101]=a[0][0];
for(j=0,l=1;l<1001;l++,j++)
b[0][l]=a[0][j];
for(k=0;k<999;k++)
{
for(l=1;l<1001;l++)
{
if((b[k][l-1]==1)&&(b[k][l]==1)&&(b[k][l+1]==1))
b[k+1][l]=0;
else if((b[k][l-1]==1)&&(b[k][l]==1)&&(b[k][l+1]==0))
b[k+1][l]=1;
else if((b[k][l-1]==1)&&b[k][l]==0&&b[k][l+1]==1)
b[k+1][l]=0;
else if(b[k][l-1]==1&&b[k][l]==0&&b[k][l+1]==0)
b[k+1][l]=1;
else if(b[k][l-1]==0&&b[k][l]==1&&b[k][l+1]==1)
b[k+1][l]=1;
else if(b[k][l-1]==0&&b[k][l]==1&&b[k][l+1]==0)
b[k+1][l]=1;
else if(b[k][l-1]==0&&b[k][l]==0&&b[k][l+1]==1)
b[k+1][l]=1;
else b[k+1][l]=0;
}
}
for(k=0;k<1000;k++)
{
for(l=1;l<1001;l++)
{
printf("%d",b[k][l]);
fprintf(fp,"%d ",b[k][l]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
return 0;
}
这个程序运行出现如下问题:Unhandled exception in text1.exe:0xc00000FD:stack overflow.

一般这种问题,你把大数组搬到 main() 以前,处理为全局量 就可以了。
int a[1000][1000],b[1000][1002];
main(){..}
------
另外查一下,数组下标有没有超界。追问

什么是超界?求指导

追答

int a[1000][1000],b[1000][1002];
如果 k=999 或 大于999
b[k+1][l]=1; 的下标就超界了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-20
stack overflow 堆栈溢出。局部变量超出堆栈最大尺寸。
如果使用32位编译器,如Vc,转为全局变量,可通过;
如果使用Tc 16位编译器,则没办法了。数组太巨大了!
第2个回答  2014-03-20
好像是内存溢出了,int型二维数组中元素好像多了,你把数值改小试试吧。比如改成10,这样比较好调试。
相似回答