目录

零基础 C/C++ 学习路线推荐 : ​​C/C++ 学习目录​​ >> ​​C 语言基础入门​

一.数组下标越界和内存溢出简介

溢出本义是算术溢出(arithmetic overflow),指算术计算结果无法在一定范围内表示,细分上溢(overflow)和下溢(underflow)。

越界即访问越界(access out of range),指对存储的访问不在预先指定的界限内。逻辑上来说可能造成访问越界的计算结果也可以看成一种溢出,这是引申义。只不过两种情况经常一起出现,所以混用了。

二.数组下标越界和内存溢出区别

1、溢出是把大的东西往小的东西里装造成的,会造成程序逻辑异常,但一般不会 abort。

比如一个计时器,最大计 ​​100s​​ 的时,你让他跑了​​120​​秒,它就溢出了。

比如一个两个 ​​char​​ ,一个 ​​200​​ ,一个也是 ​​200​​ ,相加,结果也就溢出,因为 ​​char​​ 最大就 ​​255​​.

2、越界是访问或者使用到不属于它的地方,会造成 abort ,甚至死机。

比如 ​​C 语言​​数组 int ​​a[3]​​,明明只有 ​​3​​ 个元素,你用 ​​a[3]​​,这就越界了;

比如你申请了 ​​100​​ 字节的内存,但你写的时候写到 ​​101​​ 字节去了,这也就是越界。

三.猜你喜欢

  1. ​安装 Visual Studio​
  2. ​安装 Visual Studio 插件 Visual Assist​
  3. ​Visual Studio 2008 卸载​
  4. ​Visual Studio 2003/2015 卸载​
  5. ​C 语言格式控制符/占位符​
  6. ​C 语言逻辑运算符​
  7. ​C 语言三目运算符​
  8. ​C 语言逗号表达式​
  9. ​C 语言 sizeof 和 strlen 函数区别​
  10. ​C 语言 strcpy 和 strcpy_s 函数区别​
  11. ​C 语言 memcpy 和 memcpy_s 区别​
  12. ​C 语言 数组定义和使用​
  13. ​C 语言 数组遍历​
  14. ​C 语言 数组排序 – 冒泡法排序​
  15. ​C 语言 数组排序 – 选择法排序​
  16. ​C 语言 数组排序 – 插入法排序​
  17. ​C 语言 数组排序 – 快速法排序​
  18. ​C 语言 数组下标越界​
  19. ​C 语言 数组内存溢出​
  20. ​C 语言 数组下标越界和内存溢出区别​