下标越界为什么不提示出错解决办法

下标越界为什么不提示出错
int   *s;
s=new   int[3];
为什么我输出   s[5]......也有值,运行时还没有提示出错,为什么呀,不是应该运行不了的吗,可是运行还有值


------解决方案--------------------
因为旁边的内存已经被分配了,尤其是函数堆栈上,一般不会出错,但是会导致周边数据出错,比如我就遇到过这种现象
char a[4];
char b=0;
a[5]=3;

结果发现b=3了
------解决方案--------------------
s[5]是s[0]往下移动5个数组元素大小的内容,就是说s[5]这个地址是存在的,只是访问它会引起不可预料的结果.所以有些编译器不会提示
------解决方案--------------------
之其然,之其所以然,高!
------解决方案--------------------
int 不出错很正常
如果你 new 一个类的指针数组
再按照上面的方法试一试,
------解决方案--------------------
你删除一下试试