当我编译这个简单的C代码时,它很好但是在取消注释该行之后它显示了分段错误。我不知道这有什么问题。请帮忙。
#include<stdio.h>
int main()
{
int arr[10002][10002];
int color[10002];
int neigh;
// scanf("%d",&neigh);
return 0;
}
答案 0 :(得分:12)
你正在用arr
和color
吹嘘筹码。大概是当你对scanf
的调用被注释掉时,编译器会优化所有这些变量,但是当它出现时它会尝试在堆栈上分配内存。
使变量成为全局变量,并读取堆栈内存与堆内存。
#include<stdio.h>
int arr[10002][10002];
int color[10002];
int main()
{
int neigh;
scanf("%d",&neigh);
return 0;
}
答案 1 :(得分:5)
在函数内部分配的变量放在堆栈上,堆栈的大小有限。您可以使用malloc
在(较大的)堆上分配它们。