【C语言】数组的访问越界
在C语言中,访问数组时编译器并不会检查数组下标是否越界。
这种不加检查的行为的好处是不需要浪费时间对有些已知正确的数组下标进行检查,坏处是会导致错误地访问别的地址空间。
#include <stdio.h>
//数组访问越界
int main() {
int a[5]={1,2,3,4,5},i=20,j=10;
a[5]=6; //越界访问
a[6]=7; //越界访问
printf("%d",j);
return 0;
}
进行debug,在内存视图中可以看到 a[6] 是访问了变量 j 所在的空间,明明未对变量 j 赋值,其值却发生了变化。
一个良好的经验法则是:如果下标值是通过那些已知正确的值计算得来,那么就无需检查。如果下标值是用户输入的数据产生的,就需要进行检查以确保下标位于有效范围内,
本文来自博客园,作者:hzyuan,转载请注明原文链接:https://www.cnblogs.com/hzyuan/p/17949770
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2022-01-06 【算法】计数排序
2022-01-06 【java】比较器的使用