C++之调试内存访问错误(二百一十一)

news2025/5/26 2:51:50

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之调试内存访问错误手段。

2.内存访问越界例子

1 #include <cstdio>
2 
3 int main(void) {
4   int a[5] = {0};
5   //访问数组索引5,越界.
6   a[5] = 2;
7 
8   printf("%d\n", a[5]);
9   return 0;
10 }

编译:g++ -fsanitize=address test.cpp -g -o test
运行: ./test

=================================================================
==269033==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffeaa98aae4 at pc 0x55978dd8839a bp 0x7ffeaa98aaa0 sp 0x7ffeaa98aa90
WRITE of size 4 at 0x7ffeaa98aae4 thread T0
    #0 0x55978dd88399 in main ~/test.cpp:6
    #1 0x7f8010ea5d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #2 0x7f8010ea5e3f in __libc_start_main_impl ../csu/libc-start.c:392
    #3 0x55978dd88184 in _start (~/test+0x1184)

Address 0x7ffeaa98aae4 is located in stack of thread T0 at offset 52 in frame
    #0 0x55978dd88258 in main ~/test.cpp:3

  This frame has 1 object(s):
    [32, 52) 'a' (line 4) <== Memory access at offset 52 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
      (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow ~/test.cpp:6 in main
Shadow bytes around the buggy address:
  0x100055529500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x100055529550: 00 00 00 00 00 00 f1 f1 f1 f1 00 00[04]f3 f3 f3
  0x100055529560: f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x100055529590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1000555295a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==269033==ABORTING

SUMMARY: AddressSanitizer: stack-buffer-overflow ~/test.cpp:6 in main
第6行内存溢出, 访问数组索引5越界,导致内存溢出。

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

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

相关文章

PythonUI自动化测试 —— 浏览器启动参数设置

网上的文章对小白不友好呀&#xff0c;都是给你一堆参数&#xff0c;都不教你怎么使用&#xff0c;直接跳过了最重要的部分&#xff0c;写下该文章希望对后续人有指导性作用 什么参数都不设置时的启动方式 import time from selenium import webdriver# 创建浏览器驱动参数对象…

NSSCTF之Misc篇刷题记录(16)

NSSCTF之Misc篇刷题记录&#xff08;16&#xff09; [黑盾杯 2020]encrypt[UTCTF 2020]Spectre[UTCTF 2020]Observe closely NSSCTF平台&#xff1a;https://www.nssctf.cn/ PS&#xff1a;所有FLAG改为NSSCTF [黑盾杯 2020]encrypt UTAxSlUwTkRWRVo3Um1GclpWOWxibU55ZVhCMGFX…

选择离子风棒需要注意什么?

离子风棒是一种固定式静电消除器&#xff0c;具有铜质外壳、铝制外壳、不锈钢外壳、坚固美观、风力强劲、经久耐用、耐酸碱、耐腐蚀、除静电除尘快的特点&#xff0c;适用于自动除静电除灰尘装置。 作用原理&#xff1a;离子风棒可产生大量的带正负电荷的气团&#xff0c;可以…

UG\NX二次开发 获取工作部件的完整名称、文件名称、文件夹路径 UF_ASSEM_ask_component_data

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 获取工作部件的完整名称、文件名称、文件夹路径 UF_ASSEM_ask_component_data 效果: 代码: //获取工作部件的完整名称、文件名称、文件夹路径…

算法分析与设计编程题 动态规划

矩阵连乘 题目描述 解题代码 void printOptimalParens(vector<vector<int>>& partition, int i, int j) {if (i j) cout << "A" << i; // 单个矩阵&#xff0c;无需划分else {cout << "(";printOptimalParens(partit…

异步FIFO设计的仿真与综合技术(3)

概述 本文主体翻译自C. E. Cummings and S. Design, “Simulation and Synthesis Techniques for Asynchronous FIFO Design 一文&#xff0c;添加了笔者的个人理解与注释&#xff0c;文中蓝色部分为笔者注或意译。前文链接&#xff1a; 异步FIFO设计的仿真与综合技术&#xf…

29.Xaml TreeView控件---->树形控件,节点的形式显示数据

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

栈和队列讲解

栈和队列 栈和队列3.1 栈和队列的定义和特点3.2 案例引用3.3 栈的顺序表示和实现3.4 栈的链式表示和实现3.5 队列的顺序表示和实现3.6 队列的链式表示和实现 3.1 栈和队列的定义和特点 栈 (stack) 是限定仅在表尾进行插入或删除操作的线性表。 因此&#xff0c; 对栈来说&…

树莓派4B使用Docker部署SpringBoot项目——(一)树莓派安装docker

使用Shell7连接树莓派&#xff0c;命令行执行安装命令&#xff0c;等待安装成功即可。 apt install docker.io执行docker version查看docker版本信息。 其他docker命令。 docker images 查看镜像 docker ps -a 查看所有容器 docker ps 查看运行的容器

社区分享|MeterSphere变身“啄木鸟”,助力云帐房落地接口自动化测试

云帐房网络科技有限公司&#xff08;以下简称为“云帐房”&#xff09;成立于2015年3月&#xff0c;以“成为最值得信赖的税务智能公司”为愿景&#xff0c;运用人工智能、大数据等互联网技术&#xff0c;结合深厚的财税行业服务经验&#xff0c;为代账公司和中大型企业提供智能…

Linux中使用Docker安装ElasticSearch7.10.x集群

使用Docker安装ElasticSearch7.10.x单节点请访问这里 一、集群环境说明 服务器IP地址192.168.137.1&#xff0c;192.168.137.2&#xff0c;192.168.137.3 二、前期准备 1. 拉取镜像 docker pull elasticsearch:7.10.12. 首先需要创建一个用于生成秘钥的初始容器&#xff0…

一体化研发协作赋能平台:Apipost

作为一款专为程序员打造的API管理工具&#xff0c;Apipost也成为开发人员圈子里的一款热门工具。Apipost拥有强大的功能和便捷操作性&#xff0c;这也让许多开发者爱不释手。那么&#xff0c;Apipost到底有哪些吸引人的特点呢&#xff1f;本文将为您详细介绍。 统一API管理 Ap…

qt 移植到vs后,常见问题汇总????

1.第一次在VS中编译QT项目&#xff0c;因为在MinGW中不能编译带有qtwebengine的程序&#xff0c;因为这个引擎使用的google浏览器的内核&#xff0c;据QT官方的说法&#xff1a;google不喜欢MinGW,所以QT5.5以后的版本中带有这个模块的的部分将无法编译通过&#xff0c;我们只能…

《银河麒麟高级服务器操作系统V10》使用

一言而论&#xff1a;讲了麒麟服务器V10的基本使用&#xff0c;包括终端、VNC 文章目录 前言基本架构环境硬件环境软件环境 麒麟安装步骤1.在宿主机上安装好VM&#xff0c;并且激活2.使用VM创建虚拟机3.启动虚拟机 终端常用点VNC的使用麒麟上安装VNC服务器Windows上安装VNC客户…

在ie浏览器下解决pdfjs插件思源宋体字体部分无法识别问题

pdf文件正常 利用pdfis渲染出来就成这样了 查看了思源宋体是2017年发布,pdf版本是1.10.88 &#xff0c;推测可能由于版本问题部分字体映射没有&#xff0c;去官网拷贝了几个版本&#xff0c;在本地启服务测试了几个&#xff0c;为了兼顾ie浏览器兼容 &#xff0c;选择了2.0.94…

JVM参数配置

一、堆内存相关配置 复制代码 设置堆初始值 指令1&#xff1a;-Xms2g 指令2&#xff1a;-XX:InitialHeapSize2048m ​ ​ 设置堆区最大值 指令1&#xff1a;-Xmx2g 指令2&#xff1a; -XX:MaxHeapSize2048m ​ ​ 缩小堆内存的时机 -XX:MaxHeapFreeRatio70//堆内存…

视频怎么抠图换背景,怎么把视频后面的背景换掉?

视频中的背景可以直接影响整个视频的观感&#xff0c;有时候我们需要更换背景来达到更好的效果。而如何更换背景呢&#xff1f; 在视频制作中&#xff0c;更换视频背景可以为视频添加更好的视觉效果&#xff0c;增强观赏性和吸引力。例如&#xff0c;在拍摄一个演讲视频时&…

C++之打印编译全过程(二百一十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

驱动开发--汇总

一&#xff0c;【驱动相关概念】 1&#xff0c;什么是驱动 能够驱使硬件实现特定功能的软件代码 根据驱动程序是否依赖于系统内核将驱动分为裸机驱动和系统驱动 2&#xff0c;逻辑驱动和系统驱动的区别 裸机驱动&#xff1a;编写的驱动代码中没有进行任何内核相关API的调用…

小程序实现一个 倒计时组件

小程序实现一个 倒计时组件 需求背景 要做一个倒计时&#xff0c;可能是天级别&#xff0c;也可能是日级别&#xff0c;时级别&#xff0c;而且每个有效订单都要用&#xff0c;就做成组件了 效果图 需求分析 需要一个未来的时间戳&#xff0c;或者在服务度直接下发一个未来…