我正在创建以下数组:
int p[100];
int
main ()
{
int i = 0;
while (1)
{
p[i] = 148;
i++;
}
return (0);
}
在写入数组的 1000 个位置(而不是 100 个)后,程序因段错误而中止。我知道 C 不会检查程序是否写入越界,这是留给操作系统的。我在ubuntu上运行它,堆栈的大小是8MB(限制-s)。为什么1000之后就中止了?如何检查我的操作系统为数组分配了多少内存? 抱歉,如果之前有人问过这个问题,我一直在谷歌上搜索这个问题,但似乎找不到具体的解释。
最佳答案
访问无效的内存位置会导致 Undefined Behavior这意味着任何事情都有可能发生。不一定会发生段错误。
关于c - 数组和段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278505/