零基础 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
字节去了,这也就是越界。
三.猜你喜欢
- 安装 Visual Studio
- 安装 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸载
- Visual Studio 2003/2015 卸载
- C语言格式控制符/占位符
- C语言逻辑运算符
- C语言三目运算符
- C语言逗号表达式
- C语言 sizeof 和 strlen 函数区别
- C语言 strcpy 和 strcpy_s 函数区别
- C语言 memcpy 和 memcpy_s 区别
- C语言 数组定义和使用
- C语言 数组遍历
- C语言 数组排序 – 冒泡法排序
- C语言 数组排序 – 选择法排序
- C语言 数组排序 – 插入法排序
- C语言 数组排序 – 快速法排序
- C语言 数组下标越界
- C语言 数组内存溢出
- C语言 数组下标越界和内存溢出区别
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容