创建了一个静态数组,越界访问为什么不报错

#include<stdio.h>
int main()
{
    int s[5],i;
    for( i=0;i<10;i++)
    {
        s[i]=i;
    }
    printf("
");
    for( i=0;i<10;i++)
    {
        printf("%d ",s[i]);
    }
    return 0;
}


其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统内存管理的粒度不是字节而是页,一页通常为4KB

c与c++对越界是不进行检查的,当程序越界时结果很危险,可能修改了别的程序或者自己程序的内容,若越界的地方是不可访问的,或者只读,程序对其修改就会出现运行时异常

原文地址:https://www.cnblogs.com/qie-wei/p/10160199.html