【发布时间】:2010-10-14 21:01:33
【问题描述】:
为什么 C/C++ 会在数组索引越界的情况下进行区分
#include <stdio.h>
int main()
{
int a[10];
a[3]=4;
a[11]=3;//does not give segmentation fault
a[25]=4;//does not give segmentation fault
a[20000]=3; //gives segmentation fault
return 0;
}
我知道它正在尝试访问分配给进程或线程的内存,以防a[11] 或a[25],而在a[20000] 的情况下,它会超出堆栈范围。
为什么编译器或链接器不给出错误,他们不知道数组大小吗?如果不是,那么sizeof(a) 如何正常工作?
【问题讨论】: