码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数组越界访问导致死循环的情况


    这个问题是在学习程序地址空间的时候回忆C语言学习时想到的

    我们会遇到下面的情况

    int main()
    {
    	int i = 0;
    	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    	for(i = 0; i <= 12; i++)
    	{
    		arr[i] = 0;
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    程序死循环了

    问题就出在程序的存储空间上,i和arr都是局部变量,都存储在栈空间上的,并且程序对于栈空间的使用是先使用高地址,再使用低地址,所以内存分布图如下
    在这里插入图片描述
    我们在程序中先定义了 i,所以先为 i 开辟了空间,里面存储的数据是0,然后再为数组arr开辟空间,并且对于数组越界的检查并没有太严格,这里我们循环这个数组,去访问到了arr[10]、arr[11]、arr[12]的空间,并分别对其赋值为0,由于栈空间的“生长方向”是先使用高地址,再使用低地址,所以在我们访问arr[12]时,就同时访问到了 i 的空间,并将其赋值为0,此时 i 从12变成了0,又继续循环下去

    这种情况比较特殊,是否会触发,还需要看编译器检查的脸色,所以还得多调试看内存空间的存储情况

    这里没有报错的原因可以简单理解为当前CPU正在执行这个循环,只要这个循环还没有结束,CPU就不会去检查越界的问题,如果当我们的循环结束后,才会去检查刚刚是否有越界访问的情况(通过测试,如果只是"读",没有写入,越界了也不会报错,越界写,就会报错,但是去读一个我们程序未定义的内存空间,是没有任何意义,并且风险很大的

  • 相关阅读:
    公司大数据智能管理平台密码不正确 Hue平台进不去
    关键字 internal
    HS6621Cx 一款低功耗蓝牙SoC芯片 应用于键盘、鼠标和遥控器消费类产品
    【力扣每日一题】2023.9.15 宝石补给
    使用SpringBoot将图片上传至阿里云OSS
    Unity - 导出的FBX模型,无法将 vector4 保存在 uv 中(使用 Unity Mesh 保存即可)
    SpringMVC获得请求数据类型
    基于Pytorch的从零开始的目标检测
    PT_中心极限定理CLT:棣莫佛-拉普拉斯定理de Moivre - Laplace CLT+林德伯格-列维(Lindeberg-Levy)定理
    合宙esp32 环境搭建和使用方法
  • 原文地址:https://blog.csdn.net/The_upset_grass/article/details/133893307
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号