越界访问数组
越界访问是指访问(操作修改)了不属于自己的空间
我们以如下代码为例:此代码在vs中进行
#include <stdio.h>
int main()
{int i = 0;int arr[] = {1,2,3,4,5,6,7,8,9,10};for(i=0; i<=12; i++){arr[i] = 0;printf("hello\n");}return 0;
}
想想这个代码的结果如何?
可能你的答案是:打印13个hello?
NO!正确答案是:死循环地打印hello
解释:
数组只有10个元素,故而合法的下标范围是0~9
这个代码的本意是将数组中的所有元素置成0
但是在完成这项任务后,i继续++,继而访问不属于arr数组的内存空间,将arr[10]=0 arr[11]=0,arr[12]=0,其实arr[12]就是i,即在循环中将i变成了0
也就是说:i从0开始++,直到12,又变成0,再不断++,达到12,故而每12次,i会变成0,从头开始,永远也不会满足结束循环的条件,因为i最大就是12
原理:
1 i和arr数组都是局部变量,是在栈区上的
栈区内存的使用习惯是:先使用高地址处的空间,再使用低地址处的空间
2 数组随着下标的增长,地址是由低到高变化的
以下是演示图例:

在vs中:i和arr数组中间留2个空间
在gcc中:中间留1个空间
在vc6.0中,中间不留空间
相关文章:
越界访问数组
越界访问是指访问(操作修改)了不属于自己的空间 我们以如下代码为例:此代码在vs中进行 #include <stdio.h> int main() {int i 0;int arr[] {1,2,3,4,5,6,7,8,9,10};for(i0; i<12; i){arr[i] 0;printf("hello\n");}r…...
软件设计(十)--计算机系统知识
软件设计(九)https://blog.csdn.net/ke1ying/article/details/128990035 一、效验码 奇偶效验:是一种最简单的效验方法。基本思想是:通过在编码中增加一个效验位来使编码中1的个数为奇数(奇效验)或者为偶…...
【不知道是啥】浅保存哈
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…...
2021 WAIC 世界人工智能大会参会总结
前言 2021 年世界人工智能大会(WAIC)于2021年7月7日至10日在上海世博展览馆举办,本届大会继续秉持「智联世界」的理念,以「众智成城」为主题,促进全球人工智能创新思想、技术、应用、人才和资本的集聚和交流ÿ…...
ThingsBoard-实现定时任务调度器批量RPC
1、概述 ThingsBoard-CE版是不支持调度器的,只有PE版才支持,但是系统中很多时候需要使用调度器来实现功能,例如:定时给设备下发rpc查询数据,我们如何来实现呢?下面我将教你使用巧妙的方法来实现。 2、使用什么实现 我们可以使用规则链提供的一个节点来实现,这个节点可…...
MySQL数据库调优————数据库调优维度及测试数据准备
MySQL性能优化金字塔法则 不合理的需求,会造成很多问题。(比如未分页,数据需要多表联查等)做架构设计的时候,应充分考虑业务的实际情况,考虑好数据库的各种选择(比如是否要读写分离,…...
电子货架标签多种固定方式
2.1寸和2.9寸电子价格标签多种固定方式: 1、桌面支架,放置在桌面或是货架上,用于桌面产品的价格或是信息显示 2、粘贴架,方便用于墙面桌面等应用 3、半透明支架,用于货架上的商品吊挂显示价格信息 4、轨道架ÿ…...
基于JavaEE的智能化跨境电子商务平台的设计
技术:Java、JSP、框架等摘要:伴随着近年来互联网的迅猛发展,网上零售逐渐成为了一种影响广泛、方便快捷的购物渠道。我国网上零售业发展的步伐很快。在如今经济全球化的影响下,消费者的网购行为趋于开放化、多元化,对于…...
C语言学习笔记(二): 简单的C程序设计
数据的表现形式 常量 在C语言中常量有以下几种: 整型常量: 0,-1,100实型常量: 小数形式(12.12);指数形式(12.1e312.110312.1\times 10^312.1103)字符常量: 普通字符(’a’,’Z’,’#’);转义字符(’\n’…...
十、STM32端口复用重映射
目录 1.什么是端口复用? 2.如何配置端口复用? 3.什么是端口重映射 ? 4.什么是部分重映射和完全重映射? 5.重映射的配置过程 1.什么是端口复用? STM32有很多外设,外设的外部引脚与GPIO复用。也就是说一…...
【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket,进程信号
文章目录1.函数重载:writetofile(),Ctrue和false,C0和非02.类和对象:vprintf2.1 构造函数:对成员变量初始化2.2 析构函数:一个类只有一个,不允许被重载3.引用:C中&取地址&#x…...
Spring基础知识
1 简介官网:https://spring.io/projects,Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能。Spring Framework是最底层的框架,是其他项目的根基。Spring Boot Spring MVC…...
proxy代理与reflect反射
proxy代理与reflect 在这之前插入一个知识点arguments,每个函数里面都有一个arguments,执行时候不传默认是所有参数,如果传了就是按顺序匹配,箭头函数没有 代理函数 代理对象也就是生成一个替身,然后这个替身处理一切的…...
机器视觉 多模态学习11篇经典论文代码以及解读
此处整理了深度学习-机器视觉,最新的发展方向-多模态学习,中的11篇经典论文,整理了相关解读博客和对应的Github代码,看完此系列论文和博客,相信你能快速切入这个方向。每篇论文、博客或代码都有…...
Redis过期删除策略
目录引出Redis过期删除策略Redis的两种过期策略:定期删除 惰性删除定期删除惰性删除Redis两种过期删除策略存在的问题Redis缓存淘汰策略Redis中的LRU和LFU算法1、LRU(Least Recently Userd最近最少使用)LFU 算法的引入2、LFU(lea…...
数据流分析之def-use链分析
数据流分析之def-use链分析引言1 相关概念2 算法2.1 算法规则2.2 算法流程2.3 算法优化3 举例引言 编译过程中,知道函数中每个指令引用的变量(或虚拟寄存器)来自于前面的哪一次赋值是很有必要的。例如llvm中对store/load转phi优化,就需要准确知道该信息…...
【0175】【内存上下文】如何利用context_freelists[]来彻底释放MemoryContext中分配的所有内存(8 - 2)
文章目录 1. MemoryContext 删除的另一种形式1.1 context_freelists[] 数组1.1.1 context_freelists[0] 和 context_freelists[1] 的意义1.1.2 context_freelists[0] 和 context_freelists[1] 各自功能示意图1.2 context_freelists[] 各成员在删除context时的初始化情况1.2.1 c…...
Redis实战—黑马点评(一) 登录篇
Redis实战 — 黑马点评(一) 登录篇 来自黑马的redis课程的笔记 【黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】 目录Redis实战 — 黑马点评(一) 登录篇1. 项目…...
建造者模式-搭建Qt窗口案例
文章目录logging日志输出子线程设计模式可视化插件类界面设计呼吸灯实现综合案例实现本综合案例,应用到如下的知识点。logging日志输出 自定义日志记录器,实现将日志输出到指定的控件中。 # 自定义日志记录器类子线程 threading实现子线程及Qt中的子线…...
*from . import _imaging as core : ImportError: DLL load failed: 找不到指定的模块
错误提示如上。为了解决这个问题,首先参考了解决 from . import _imag…模块。. 首先尝试了彻底卸载pillow:conda uninstall pillow ; pip uninstall pillow 然后重装 pip install pillow,发现问题仍然没有解决。 并且尝试了windo…...
手把手教你用C语言实现三相锁相环(附完整源码与仿真波形分析)
手把手教你用C语言实现三相锁相环(附完整源码与仿真波形分析) 在电力电子和电机控制领域,锁相环(PLL)技术是实现电网同步、逆变器控制的核心组件。传统教材往往停留在理论推导,而实际工程中,如何…...
OpenClaw 2.6.4 一键部署教程|零代码零基础无需命令快速上手
OpenClaw 是一款可以在本地运行的智能操作工具,能够通过自然语言指令完成电脑自动化操作,无需复杂配置即可快速使用。本文为 Windows 10/11 64 位系统提供完整的一键部署流程,帮助用户快速搭建属于自己的本地智能工具。 适配系统:…...
别再手动调阈值了!OpenCV实战:用Otsu和自适应阈值搞定光照不均的图片分割
智能图像分割实战:Otsu与自适应阈值技术解决光照不均难题 在工业质检、医疗影像分析、自动驾驶等场景中,图像分割的准确性直接影响最终结果。但现实世界的光照条件往往复杂多变——同一张图片可能同时存在过曝和欠曝区域,传统全局阈值方法在…...
稀疏记忆微调技术:解决LLM持续学习中的灾难性遗忘
1. 稀疏记忆微调技术解析 1.1 持续学习的核心挑战 在大型语言模型(LLM)的实际应用中,灾难性遗忘(Catastrophic Forgetting)是持续学习面临的最大障碍。想象一下,当你教会一个学生新知识时,他却…...
避坑指南:STM32CubeMX配置红外接收,为什么你的解码总是不准?
STM32CubeMX红外接收解码优化实战:从原理到精准解析 红外遥控技术在家电控制、智能设备交互中扮演着重要角色,但许多开发者在STM32平台上实现红外接收解码时,常遇到信号不稳定、误码率高等问题。本文将深入分析红外接收解码的核心原理&#…...
基于DGX OpenClaw Stack构建本地AI智能体:从硬件调优到生产部署
1. 项目概述:一站式本地AI智能体栈如果你和我一样,对把大语言模型(LLM)真正“养”在自己的硬件上,构建一个功能完整、数据私有的智能助手有执念,那么你很可能已经踩过不少坑了。从选模型、搭服务、配工具链…...
量子噪声对机器学习模型的影响与优化策略
1. 量子噪声与机器学习模型的复杂博弈在量子计算领域,噪声问题就像一位不请自来的客人,总是干扰着我们的计算过程。特别是在量子机器学习(QML)中,噪声的影响更为微妙且复杂。我最近使用Qiskit平台进行了一系列实验,试图揭示不同类…...
【研报 A110】物理AI时代的具身数据采集需求研究:国家级训练场落地,开源生态加速建设
摘要:物理AI时代,具身智能与世界模型的发展,推动具身数据采集成为下一代数据基建的核心浪潮。具身大模型对数据有着EB级的海量需求,同时对多模态、异构性与质量要求极高,当前数据缺口成为制约具身智能发展的核心瓶颈&a…...
美政府AI主管:Anthropic 将在 18 个月内成为人类历史最有价值公司
Anthropic 已经成为人工智能革命中最成功的案例之一,但这或许还不是全部。风险投资家兼美国政府人工智能和加密货币沙皇大卫萨克斯在 All-In播客节目中提出了一个惊人的说法:Anthropic 不仅有望成为科技界最强大的公司,而且有望成为人类历史上…...
