在下面的程序中,当用户输入输入为720时,程序崩溃。为什么呢?
main()
{
for (;;)
{
int depth,i,j;
printf("enter the depth");
scanf("\n%d",&depth);
printf("first");
int arr[depth][depth];//at this line the program get crashed //
printf("first1");
for(i=0;i<depth;i++)
{
for(j=0;j<=i;j++)
{
arr[i][j]=i+1;
}
}
for(i=0;i<depth;i++)
{
printf("\n");
for(j=0;j<=i;j++)
{
printf("%d\t",arr[i][j]);
}
}
}
}
答案 0 :(得分:-1)
这样的数组在堆栈上分配。如果用户输入720,则会得到一个大小为720*720*sizeof(int)
字节的数组。在具有32位int
的系统上,这几乎是2MB。你很可能得到这个网站的名字:堆栈溢出!
相反,在堆上分配:
int **arr = malloc(depth * depth * sizeof(int));
您需要稍后使用free(arr);
释放内存。