C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***

news2024/11/22 18:26:19

一、报错信息

[2023-7]--[ Debug ]--Destroy DqlResult Struct OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Job            : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
[2023-7]--[ Debug ]--Destroy Moia Job            : OK
[2023-7]--[ Debug ]--Destroy Moia Base Job       : OK
*** Error in `../ExecuteFile/TestMoiaTableCode': munmap_chunk(): invalid pointer: 0x0000000002070150 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f474)[0x7ff60d7dd474]
../ExecuteFile/TestMoiaTableCode[0x402aec]
../ExecuteFile/TestMoiaTableCode[0x402e0c]
../ExecuteFile/TestMoiaTableCode[0x402f9d]
../ExecuteFile/TestMoiaTableCode[0x4050bf]
../ExecuteFile/TestMoiaTableCode[0x4050e0]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7ff60d780555]
../ExecuteFile/TestMoiaTableCode[0x400e79]
======= Memory map: ========
00400000-00407000 r-xp 00000000 fd:00 4662                               /opt/Developer/Moia/ExecuteFile/TestMoiaTableCode
00606000-00607000 r--p 00006000 fd:00 4662                               /opt/Developer/Moia/ExecuteFile/TestMoiaTableCode已放弃(吐核)

我在原有正常代码的基础上添加了一段逻辑,再跑,在释放内存时,出现了上述错误。

查看网上的这个错误解释:程序试图释放一个无效的内存地址。会出现此错误。

看完还是一脸懵。

二、GDB调试

[gbase@czg2 Src]$ gdb ../ExecuteFile/TestMoiaTableCode core.29250 
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /opt/Developer/Moia/ExecuteFile/TestMoiaTableCode...done.

warning: core file may not match specified executable file.
[New LWP 29250]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `../ExecuteFile/TestMoiaTableCode'.
Program terminated with signal 6, Aborted.
#0  0x00007ff60d794387 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 libgcc-4.8.5-44.el7.x86_64 sssd-client-1.16.5-10.el7_9.13.x86_64
(gdb) 
(gdb) bt
#0  0x00007ff60d794387 in raise () from /lib64/libc.so.6
#1  0x00007ff60d795a78 in abort () from /lib64/libc.so.6
#2  0x00007ff60d7d6f67 in __libc_message () from /lib64/libc.so.6
#3  0x00007ff60d7dd474 in malloc_printerr () from /lib64/libc.so.6
#4  0x0000000000402aec in DestroyMoiaBaseJob (MBJ=0x206c138) at MoiaTableCode.c:59
#5  0x0000000000402e0c in DestroyMoiaJob (MJ=0x206c130) at MoiaTableCode.c:115
#6  0x0000000000402f9d in DestroyMoiaTableSets (MTS=0x7ffed9acffd8) at MoiaTableCode.c:149
#7  0x00000000004050bf in CleanConfigTableData () at DbOperate.c:50
#8  0x00000000004050e0 in main () at main.c:15
(gdb) f 4
#4  0x0000000000402aec in DestroyMoiaBaseJob (MBJ=0x206c138) at MoiaTableCode.c:59
59          free((*MBJ)->ExecuteCalendar);
(gdb) quit

看上图中的报错处,看不出什么问题,因为在加新逻辑之前是正常销毁的,这时想到报错是否和之前写那段逻辑有关。

三、问题原因

1、重复的变量名

图中画红框的两个变量原来是一样的名字,后来改成不一样的名字了,但奇怪的是我在编译的时候,没有提示任何报错,gcc编译时加的是-Wall -Wextra参数,我以后注意。

总结:由于一个函数中定义了两个相同名称的变量,其中一个变量是malloc的,将其释放,会报此错误。

 2、字符串A复制超过定义长度的字符串B

 MBJ->DependentEvent:长度为100的char数组。

ValStr->String:长度为105的char数组。

而且还复制字符串和写数据成功了,苦笑,这个错误我是用二分法来定位的。

将MBJ->DependentEvent的定义长度加长,此问题解决。

总结:例如字符串定义长度为100(malloc的变量),使用strcpy、sprintf进行字符串复制一个超过100字节的数据,最后释放此变量也会出现此问题。

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

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

相关文章

Redis学习(二)线程安全、分布式锁、消息队列

文章目录 优惠券秒杀全局ID生成器优惠券秒杀下单超卖问题一人一单 分布式锁基于Redis的setnx指令实现分布式锁解决锁误删问题基于Lua脚本实现多条指令原子性Redis调用Lua脚本Java中使用Lua脚本 RedissonRedisson快速入门Redisson可重入锁原理Redisson的锁重试和Watchdog机制Red…

【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

适配各类大模型应用!手把手教你选择 Zilliz Cloud 实例类型

作为大模型时代备受关注的细分赛道&#xff0c;向量数据库可以不仅为大模型提供存储和向量检索的功能&#xff0c;还能适配各种 AI 应用场景&#xff0c;例如聊天机器人、内容审核、增强 LLM 知识库等。 不过&#xff0c;对于向量数据库的开发者而言&#xff0c;成本是绕不开的…

Spring学习笔记---SpringBoot快速入门

Spring学习笔记---SpringBoot快速入门 Spring学习笔记---SpringBoot1 SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试 1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择…

(二)springboot实战——springboot基于多端内容协商适配实现json、xml、yaml等格式数据统一返回

前言 在实际应用开发场景中&#xff0c;我们有需求实现多端内容请求的适配&#xff0c;例如某些客户端需要返回json数据&#xff0c;有些客户端需要返回xml数据&#xff0c;有些客户端要返回yaml数据&#xff0c;这个时候就需要服务端做内容返回的适配&#xff0c;如果按照提供…

搭建vsto的clickonce一键发布IIS环境FTP

要在 Windows 上启用 IIS&#xff08;Internet Information Services&#xff09;&#xff0c;可以按照以下步骤进行操作&#xff1a;1. 打开“控制面板”&#xff1a;点击 Windows 开始菜单&#xff0c;然后在搜索栏中输入“控制面板”&#xff0c;并选择相应的结果。2. 打开“…

Maven 项目构建生命周期

Maven 项目构建生命周期 一句话: Maven 构建生命周期描述的是一次构建过程经历了多少个事件 生命周期的3 大阶段 clean 清理工作 default 核心工作&#xff0c;例如编译&#xff0c;测试&#xff0c;打包&#xff0c;部署等 site 产生报告&#xff0c;发布站点等 生命周期…

zsh自定义命令行提示符

环境&#xff1a; oh-my-zsh 插件 效果&#xff1a; 本来的样子&#xff1a;感觉元素很多&#xff0c;比较挤占地方 现在的样子&#xff1a;简洁了很多 步骤&#xff1a; 打开主题的配置文件&#xff08;我的主题是agnoster &#xff09; cd /Users/你的家目录/.oh-my-zsh/the…

Windows操纵kafka

这里写目录标题 启动kafk创建一个测试主题查看所有主题查看first详细信息修改分区数(分区数只能增加 不能减少)删除主题生产者生产数据消费命令 启动kafk 安装目录下 .\bin\windows\kafka-server-start.bat .\config\server.properties创建一个测试主题 安装目录下 .\bin\wi…

【Unity2D像素风格小游戏】期末考考完,和搭档一个月从零开始的Unity速成作品!

游戏实况视频 六月十八号&#xff0c;期末考完后&#xff0c;大佬搭档和我开始自学unity&#xff0c;并在七月一号正式开始一个unity2D像素小游戏的制作&#xff0c;这是一段很有意义&#xff0c;很有收获的日子。 这个项目由搭档提出&#xff0c;另一位超级大佬进行前期指导…

【分布式系统案例课】计数服务之存储设计

存什么&#xff1f; 两种存储内容&#xff0c;各有优劣 综合&#xff1a;耽搁时间和聚合数据都分别进行存储&#xff0c;可以得到两者的好处。 数据库选型 SQL数据库客户端嵌入代理 因为B站的数量级&#xff0c;单个数据库肯定是扛不住的。然后为了满足扩展性需求&#xf…

Python入门级语法详解以及实战练习

来源&#xff1a;投稿 作者&#xff1a;起酥松松 编辑&#xff1a;学姐 python基本语法元素 变量命名原则&#xff1a; 首字符不能是数字&#xff1b; 中间不能有空格&#xff1b; 不能是python保留字&#xff1b; 字母 &#xff0c;数字 &#xff0c;汉字 &#xff0c;下划…

【学会动态规划】三步问题(2)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

骨传导耳机好不好,盘点五款当下最流行的骨传导耳机

其实早在几年前&#xff0c;骨传导耳机就已经出现在大众视野了&#xff0c;由于使用的人数不多&#xff0c;所以一直不温不火的&#xff0c;最近这几年&#xff0c;骨传导耳机的热度才开始兴起&#xff0c;其最大的特点就是&#xff0c;不用入耳佩戴&#xff0c;不用担心运动过…

HOT60-单词搜索

leetcode原题链接&#xff1a;单词搜索 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#…

分体式骨传导,为敏感耳朵打造的舒适体验,南卡OE上手

骨传导蓝牙耳机这两年很受运动玩家的欢迎&#xff0c;不过标准的骨传导耳机用起来并不算方便&#xff0c;最近我看到南卡新推出一种分体式骨传导耳机&#xff0c;叫南卡OE&#xff0c;和普通的骨传导耳机有很大不同。上周我也入手了一款&#xff0c;这几天试了试&#xff0c;感…

基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】

超详细教程系列在我前面的文章中也有不少的实践记录&#xff0c;感兴趣的话可以自行阅读即可&#xff1a; 《基于yolov7开发实践实例分割模型超详细教程》 《YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程》 《基于yolov5-v7.0开发实践实例分割模型超详细…

实现java参数非必传

1、路径参数&#xff1a; PathVariable(required false)实现参数aaa非必传 2、非路径参数&#xff1a; RequestParam(required false) 实现参数aaa非必传 3、实体参数&#xff1a; RequestBody(required false&#xff09;实现实体aaa非必传

Java基础---集合类

目录 典型回答 Collection和Collections有什么区别 Java中的Collection如何遍历迭代 Iterable和Iterator如何使用 为什么不把Iterable和Iterator合成一个使用 哪些集合类是线程安全的 典型回答 什么是集合 集合就是一个放数据的容器&#xff0c;准确的说是放数据对象引用…

32位ARM M0+内核单片机 XL32F001简单介绍,Flash 24K,SRAM 3K

XL32F001 系列微控制器采用高性能的 32 位 ARM Cortex-M0内核&#xff0c;宽电压工作范围的 MCU。嵌入 24Kbytes Flash 和 3Kbytes SRAM 存储器&#xff0c;最高工作频率 24MHz。包含多种不同封装类型多款产品。芯片集成 I2C、SPI、USART 等通讯外设&#xff0c;1 路 12bit ADC…