【发布时间】:2015-01-31 20:54:19
【问题描述】:
我写了这段代码,并期待很快出现分段错误,但似乎我被允许访问我不应该能够访问的内存片段。
#include<stdio.h>
int main()
{
int tab[1];
tab[0]=42;
int i;
//Expecting Seg Fault from i==1...
for(i=0;;i++)
{
printf("%d \t %d \n", i, tab[i]);
}
return 0;
}
我正在编译使用:
gcc -Wall -Wextra my_code.c -o segfault && ./segfault
在执行时,变量 i 在我得到分段错误之前达到了 1000 阶的值。
我的问题是:为什么到目前为止我还能阅读tab?
PS:使用#include <stdlib.h> 并声明int * tab = (int*)malloc(sizeof(int)); 不会改变任何东西...
谢谢,最好的。
【问题讨论】:
-
这么多重复我一个都挑不出来。
-
非常感谢您的所有回答,也感谢您编辑标题。对于重复的主题,我很抱歉,我不知道正确的错误是“越界”而不是“分段错误”。
标签: c arrays segmentation-fault indexoutofboundsexception