数组越界访问导致死循环的情况

news2025/7/20 9:28:26

这个问题是在学习程序地址空间的时候回忆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;
}

程序死循环了

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1102495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BFD基础

1.BFD概述 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制&#xff0c;有以下两大优点&#xff1a; ①对相邻转发引擎之间的通道提供轻负荷、快速故障检测。 ②用单一的机制对任何介质、任何协议层进行实时检测。 BFD是一个简单的“Hello”协议。两个…

分享一份适合练手的软件测试实战项目

最近&#xff0c;不少读者托我找一个能实际练手的测试项目。开始&#xff0c;我觉得这是很简单的一件事&#xff0c;但当我付诸行动时&#xff0c;却发现&#xff0c;要找到一个对新手友好的练手项目&#xff0c;着实困难。 我翻了不下一百个web网页&#xff0c;包括之前推荐练…

YOLOv5算法改进(6)— Neck网络介绍(AFPN和BiFPN)

前言:Hello大家好,我是小哥谈。Neck网络是目标检测中的一个重要组成部分,主要用于对检测器提取的特征进行进一步处理和融合,以提高检测精度。通常,Neck网络由一系列卷积层、池化层、上采样层等组成,可以将不同层次的特征进行融合,同时也可以对特征进行降维和升维操作。本…

VT-MVTW-1-16/D VTS0234-47/AP025 可以用模拟或数字输入来控制

VT-MVTW-1-16/D VTS0234-47/AP025 可以用模拟或数字输入来控制 伺服驱动器可以用模拟或数字输入来控制。本质上&#xff0c;伺服驱动器的作用是将来自控制器的低功率命令信号转换成高功率电压和电流给电机。根据应用&#xff0c;伺服驱动器可以调节和适当协调电机的期望位置、…

【MySQL】索引介绍、索引的数据结构

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 索引 一、索引概述二、索引结构2.1 BTree2.…

Linux文件管理(上)

一、VIM编辑器 1、vi概述 vi&#xff08;visual editor&#xff09;编辑器通常被简称为vi&#xff0c;它是Linux和Unix系统上最基本的文本编辑器&#xff0c;类似于Windows 系统下的notepad&#xff08;记事本&#xff09;编辑器。 2、vim编辑器 Vim(Vi improved)是vi编辑器…

CSS之布局系列--顶部导航栏二级菜单居中展示

原文网址&#xff1a;CSS之布局系列--顶部导航栏二级菜单居中展示_IT利刃出鞘的博客-CSDN博客 简介 本文介绍CSS将顶部导航栏居中展示并支持二级菜单下拉展示的方法。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-…

基于人工水母优化的BP神经网络(分类应用) - 附代码

基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工水母优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工水母优化BP神经网络3.1 BP神经网络参数设置3.2 人工水母算法应用 4.测试结果…

Wireshark 通过 nrf-sniffer for BLE 抓包环境配置说明

1 准本工作 1.1 购买 nrf sniffer 抓包工具 购买链接&#xff1a;https://item.taobao.com/item.htm?spma21n57.1.0.0.46291dafMXbO9s&id718103919140&ns1&abbucket15#detail 1.2 下载文件 下载 CP2101 驱动 下载链接&#xff1a;http://www.wxlrf.com/downloa…

基于springboot实现民宿管理平台项目【项目源码+论文说明】

摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于民宿管理平台系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了民宿管理平台系统&#xff0c;它彻底改变了过…

利用Tomcat服务器实现一个简单的web应用

2023.10.17 昨天使用Tomcat服务器实现了一个简单的web应用&#xff0c;但是显示的页面是静态页面&#xff0c;今天来实现一个动态的web应用。 对于一个动态的web应用&#xff0c;一个请求和响应的过程中&#xff0c;有哪些角色参与&#xff0c;角色间有哪些协议&#xff1f; 角…

解决方案-LBS用户位置GEO附近人/店铺

附近人 附近人列表功能mysqlredis GEOthinkphp 附近人列表功能 方案优势缺点Mysql外接正方形逻辑清晰&#xff0c;实现简单&#xff0c;支持多条件筛选效率较低&#xff0c;不适合大数据量&#xff0c;不支持按距离排序MysqlGeohash借助索引有效提高效率&#xff0c;支持多条件…

密码学三 btc 钱包 节点 挖矿 51%攻击 双花攻击

03-BTC-数据结构_哔哩哔哩_bilibili 哈希指针并解释 比特币的每个区块都包含一个区块头和区块体两部分。 在区块头中,有一个字段是用于存储前一个区块的哈希值,我们把这个存储前一个区块哈希值的字段称为“哈希指针”。 这个哈希指针的作用是将本区块指向前一个区块,连接起整…

Library projects cannot set applicationId. applicationId is set to

Library projects cannot set applicationId. applicationId is set to com.xxx.library_cache in default config. 删掉即可

RTSP/Onvif安防视频平台EasyNVR级联至EasyNVS系统不显示通道,是什么原因?

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。 我们在此前的文章中也介绍过关于EasyNVR级联EasyNVS上云网关综合管理平台的内容&#xff…

Kotlin之Hello,World

一、新建Kotlin项目 二、设置Gradle为本地目录 #下载地址 https://gradle.org/releases/ 配置阿里云镜像 allprojects {repositories {mavenLocal()maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } mavenCentral()}buil…

模型量化笔记--对称量化和非对称量化

1–量化映射 量化映射的通用公式为: r S ( q − Z ) r S(q - Z) rS(q−Z) 其中r表示量化前数据的真实值&#xff0c;S表示缩放因子&#xff0c;q表示量化后的数值&#xff0c;Z表示零点 2–非对称量化 非对称量化需要一个偏移量Z来完成零点的映射&#xff0c;即量化前的零…

Facebook注册失败?速看最新注册指南

我们都知道单个代理地址注册多个社媒账号&#xff0c;基本第二天都会进入到一个风控状态&#xff0c;要申诉或者封号&#xff0c;批量注册需要用不同的地址进行注册&#xff0c;下面是需要准备到的环境和材料以及注册的全流程。 一、环境需求 1、接码平台 这个网络上有非常多…

【QT】界面布局-登陆窗口

记录页面布局-登陆窗口的流程 &#xff08;1&#xff09;继承QWidget &#xff08;2&#xff09;设置标签 &#xff08;3&#xff09;单行文本编辑 &#xff08;4&#xff09;按钮 开始设置布局&#xff0c; 法1&#xff1a;使用Horizontal layout&#xff0c;但是不方便 法2…

WebSocket: 实时通信的新维度

介绍&#xff1a; 在现代Web应用程序中&#xff0c;实时通信对于提供即时更新和交互性至关重要。传统的HTTP协议虽然适合请求-响应模式&#xff0c;但对于需要频繁数据交换的场景并不理想。而WebSocket技术的出现填补了这个空白&#xff0c;为Web开发者们带来了一种高效、实时的…