【栈越界】变量未赋值前提下,值却发生改变??

首先,提出2个问题:

  • 数组越界 和 栈越界是一回事吗?
  • 以上两种越界若有发生,程序一定会跑飞吗?

目录

  • 1. 一个栈越界的例子
  • 2. 程序的内存分部
  • 3. RAM 空间示意图

1. 一个栈越界的例子

创建 STM32 工程并写了一段测试代码

char test_char = 0;
char i = 0;
int main(void) {
    char test_data[1648];
    test_char = 1;
    test_data[0] = 100;
    while (1) {
        i++;
    }
}

调试过程:
请添加图片描述
明明是给 test_data 的第一个元素赋值,结果 test_char 的值被修改了,并且 test_data 和 test_char 明明是两个完全不同的变量,再者,出现了这种错误程序也是正常运行的(i 正常计数),没有跑飞也没有进 hardfault!

2. 程序的内存分部

Total RO  Size (Code + RO Data)                  780 (   0.76kB)
Total RW  Size (RW Data + ZI Data)              1648 (   1.61kB)
Total ROM Size (Code + RO Data + RW Data)        796 (   0.78kB)

可以看到,程序编译完成后 RW 的大小正好是1648!而这个 RW 区域到底包含了哪些东西?这里需要了解一个知识点,即此处的 RW(RW Data + ZI Data) 实际上在运行过程中处于我们的 RAM 区域。

在测试程序中定义的临时变量 test_data 为1648 个字节的大小,与整个 RAM 区的大小相等,也就是说,其会冲破栈区的大小限制,并且侵占整个 RAM 区:

3. RAM 空间示意图

在这里插入图片描述

查看原文:
嵌入式软件工程师赶紧收藏起来,这篇文章能在关键时刻拉你脱坑!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【损失函数】Hinge Loss 合页损失

1、介绍 Hinge Loss(合页损失)通常用于支持向量机(Support Vector Machine,SVM)等模型中,特别是在二分类问题中。它的目标是使正确类别的分数与错误类别的最高分之间的差异达到一个固定的边界,从…

力扣hot100 二叉树的直径

👨‍🏫 题目地址 一个节点的最大直径 它左树的深度 它右树的深度 😋 AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* Tr…

jmeter安装使用

下载 解压后 apache-jmeter-5.5\bin\jmeter.bat 启动 简单使用: 创建线程组 创建默认请求头 创建请求 post请求需要设置请求头信息 创建结果树启动

电网2.0-安科瑞EMS智能化用配电未来应用

安科瑞 崔丽洁 摘要:随着科技的发展,电力系统正逐步向智能化、数字化、互联网化迈进。智能配电与智能用电是电力产业发展的重要方向,将为传统电力系统带来革命性的变革。本文将对智能配电和智能用电的概念、特点、关键技术及应用进行详细介绍…

深入理解左倾红黑树 | 京东物流技术团队

平衡二叉搜索树 平衡二叉搜索树(Balanced Binary Search Tree)的每个节点的左右子树高度差不超过 1,它可以在 O(logn) 时间复杂度内完成插入、查找和删除操作,最早被提出的自平衡二叉搜索树是 AVL 树。 AVL 树在执行插入或删除操…

JavaWeb基础(2)- Web概述、HTTP协议、Servlet、Request与Response

JavaWeb基础(2)- Web概述、HTTP协议、Servlet、Request与Response 文章目录 JavaWeb基础(2)- Web概述、HTTP协议、Servlet、Request与Response3 Web概述3.1 Web和JavaWeb的概念3.2 JavaWeb技术栈3.2.1 B/S架构**3.2.2 静态资源**3…

[排序算法] 如何解决快速排序特殊情况效率低的问题------三路划分

前言 在[C/C]排序算法 快速排序 (递归与非递归)一文中,对于快速排序的单趟排序一共讲了三种方法: hoare、挖坑法、双指针法 ,这三种方法实现的快速排序虽然在一般情况下效率很高,但是如果待排序数据存在大量重复数据,那这几种方法的效率就很低,而为了解决快速排序在这样特殊情况…

马蹄集oj赛(双周赛第十八次)

目录 幸运的3 打靶 照亮街道 九次九日九重色 寻找串 竹鼠的白色季节 捉迷藏 好的三连 三角数 买马 可怜的小码哥 花园浇水 高次方程 幸运的3 难度:黄金时间限制: 1秒四占用内存:128M 你有 n 个数,可以将它们两两匹配(即将两数首尾相连),每个…

element中Table表格控件实现单选功能、多选功能、两种分页方式

目录 1、Table表格控件实现单选功能2、Table控件和Pagination控件实现多选和两种分页方式方法一&#xff1a;使用slice方法方法二&#xff1a;多次调用接口 1、Table表格控件实现单选功能 <template><div><!-- highlight-current-row 是否要高亮当前行 -->…

【史上最细教程】CentOS7 下载安装 RabbitMQ(两种方式:手动安装 / Docker安装)

文章目录 【史上最细教程】CentOS7 下载安装 RabbitMQ方式一&#xff1a;手动安装1.下载安装Erlang、RabbitMQ2.防火墙、安全组端口放行3.启动RabbitMQ服务4.浏览器用户登录5.配置文件查看(可略) 方式二&#xff1a;Docker安装1.安装Docker2.获取RabbitMQ镜像、创建容器3.浏览器…

synchronized锁

synchronized 类锁&#xff1a;给类的静态方法加上synchronized 关键字进行修饰&#xff0c; 锁的是当前类class&#xff0c;一个静态同步方法拿到锁&#xff0c;其他静态同步方法就会等待静态同步方法和普通同步方法间是没有竞争的 对象锁&#xff1a;给类的方法加上synchron…

权威外媒聚焦:Messari强调波场TRON在全球加密支付领域的引领作用

近日,金融时报、费加罗报及美联社等海外权威媒体就波场TRON 在全球加密支付领域的重要进展发布了相关报道。报道引述加密研究机构Messari 《Crypto Theses for 2024》年度报告,重点强调了波场TRON在推动全球加密货币支付尤其是稳定币USDT应用方面的显著成就。 报道提到,波场TR…

你的第一个C/S程序

目录 socket服务端代码客户端代码执行结果 socket socket基础知识 服务端代码 import socket import threading import timeMSG_LENGTH 64 DISCONNECTED !CONNECTION CLOSED connections 0#定义服务器地址 server_ip socket.gethostbyname(socket.gethostname()) server…

三城三奖!苏州金龙助力各地公共交通打造高品质线路

元旦前夕&#xff0c;由中国交通报社主办的绿色运输可持续发展座谈会暨2023年度“新能源公交高品质线路”经验交流会在京举行&#xff0c;来自全国各地的100余名行业管理部门、公交客运企业代表参会。会上同时评选出20条各具特色的“新能源公交高品质线路”及6家“我的公交我的…

后端主流框架-SpringMvc-day2

Java中的文件下载 2 文件下载 文件下载&#xff1a;就是将服务器&#xff08;表现在浏览器中&#xff09;中的资源下载&#xff08;复制&#xff09;到本地磁盘&#xff1b; 2.1 前台代码 前台使用超链接&#xff0c;超链接转到后台控制器&#xff0c;在控制器通过流的方式…

阿里云服务器(ECS云服务器)安装redis

前言&#xff1a; 笔者使用的是云服务器是阿里云的ECS服务器 这个服务器内核是Alibaba Cloud Linux 3。 使用的命令行工具为Alibaba Could Manager 命令行工具连接服务器这里就不多说了&#xff0c;如果没有用过的小伙伴可以去看阿里云的官方文档&#xff0c;很详细。 下面…

【51单片机系列】LCD1602液晶模块

本文是关于液晶显示屏的相关介绍。相对于静态数码管、动态数码管、LED点阵等&#xff0c;LCD1602液晶显示器能够显示更多的字符数字信息&#xff0c;并且也是常用的一种显示装置。 文章目录 一、LCD1602介绍1.1、LCD1602简介1.2、LCD1602常用指令1.3、LCD1602使用 二、LCD1602使…

[雷池WAF]长亭雷池WAF配置基于健康监测的负载均衡,实现故障自动切换上游服务器

为了进一步加强内网安全&#xff0c;在原有硬WAF的基础上&#xff0c;又在内网使用的社区版的雷池WAF&#xff0c;作为应用上层的软WAF。从而实现多WAF防护的架构。 经过进一步了解&#xff0c;发现雷池WAF的上游转发代理是基于Tengine的&#xff0c;所以萌生出了一个想法&…

SpringMVC-获取请求参数

1. 通过ServletAPI获取请求参数 /**** param request HttpServletRequest对象&#xff0c;直接作为形参传入方法&#xff0c;前端处理器就是一个Servlet* 所以前端处理器可以获得HttpServletRequest对象&#xff0c;并根据控制器方法的形参将对象传递给方法* re…

勒索事件急剧增长,亚信安全发布《勒索家族和勒索事件监控报告》

近期(12.15-12.21)态势快速感知 近期全球共发生了247起攻击和勒索事件&#xff0c;勒索事件数量急剧增长。 近期需要重点关注的除了仍然流行的勒索家族lockbit3以外&#xff0c;还有本周top1勒索组织toufan。toufan是一个新兴勒索组织&#xff0c;本周共发起了108起勒索攻击&a…