基于程序运行时崩溃

时间:2015-06-01 14:23:02

标签: c crash

在下面的程序中,当用户输入输入为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]);         
        }
    }
  }
}

1 个答案:

答案 0 :(得分:-1)

这样的数组在堆栈上分配。如果用户输入720,则会得到一个大小为720*720*sizeof(int)字节的数组。在具有32位int的系统上,这几乎是2MB。你很可能得到这个网站的名字:堆栈溢出!

相反,在堆上分配:

int **arr = malloc(depth * depth * sizeof(int));

您需要稍后使用free(arr);释放内存。

相关问题