c语言非法占用内存会有什么隐患?

比如我定义了一个长度为10的数组a,那么我可以利用指针的方法来,访问a[12],显然不合法,但依然不影响数据的存取?那么为什么会提出数组长度这个概念?

看a[12]指向什么地方,可能是另一个变量,甚至可能是堆栈返回地址,如果前者,程序运行出错,不合预期,后者,甚至程序会执行莫名其妙的代码。
所谓缓冲区溢出攻击,就是利用的这一原理,用垃圾数据覆盖掉函数的返回地址,然后跳转到另一个地方,那个地方包含恶意的代码,对计算机造成破坏。

 #include <stdio.h>

int main()
{
    int y = 1;
    int x[10];
    x[10]=3;
    printf("%d\n", y);
    return 0;
}

这代码结果是3
说明x[10]越界以后冲掉了y。

http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html
这是缓冲区溢出

内存溢出了,有可能把其他数据给踩了,

缓冲区溢出问题,比如说去运行别的代码去了,比如在linux中获得root权限,那就问题大了