1.基本概念
缓冲区溢出:
比如栈中分配一个字符数组,来保存gets()接收的字符串。如果字符数组的长度小于gets()接收的字符串的长度,则会发生
字符数组区域放不下字符串覆盖非字符数据的空间。这种就叫缓冲区溢出。



内存越界访问:
比如定义了一个长度为3的int型数组,但使用下标3访问时,就放生了内存访问越界。因为c语言规则以及实现这套规则的编译器并不提供主动的数组下标非法值检测。所以,如果数组下标是外部接口传入的,建议在程序中,主动进行数组下标校验。
下发举一个内存越界访问的例子:

说到底,无论是缓冲区溢出还是内存越界访问,基于都是