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

这篇具有很好参考价值的文章主要介绍了C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、报错信息

[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参数,我以后注意。

C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***,# C语言-报误集锦,c语言,学习,开发语言

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

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

C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***,# C语言-报误集锦,c语言,学习,开发语言

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

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

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

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

总结:例如字符串定义长度为100(malloc的变量),使用strcpy、sprintf进行字符串复制一个超过100字节的数据,最后释放此变量也会出现此问题。文章来源地址https://www.toymoban.com/news/detail-560334.html

到了这里,关于C语言-报错集锦-02-munmap_chunk(): invalid pointer: 0x0000000001d2e150 ***的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端请求报错net::ERR_INCOMPLETE_CHUNKED_ENCODING

    项目后端程序运行环境为centos7.6。 首先是前端页面中大小为160多KB以上的图片均无法加载,且后端程序捕获到异常 IOException,查看前端请求发现内存较大的图片均请求响应状态为200,但返回 failed,net::ERR_INCOMPLETE_CHUNKED_ENCODING,并且后端频繁出现tcp管道断开重连异常 ①考虑较

    2024年02月04日
    浏览(49)
  • Vivado报错集锦

    [USF-ModelSim-70] \\\'compile\\\' step failed with error(s) while executing \\\'D:/Xilinx/Vivado/base2/vga_top.sim/sim_1/behav/modelsim/compile.bat\\\' script. Please check that the file has the correct \\\'read/write/execute\\\' permissions and the Tcl console output for any other possible errors or warnings. [Vivado 12-4473] Detected error while running simulation. Please c

    2024年02月08日
    浏览(36)
  • 【无标题】力扣报错:member access within null pointer of type ‘struct ListNode‘

    做单链表反转题目,报错:member access within null pointer of type ‘struct ListNode’ 题目链接:LINK 我明明在初始化指针时候,已经处理了n2-next情况却依然报错 这个报错提示含义是:大概就是他给你传个空指针的话你的语法是错误的含义。 提示:这里填写问题的分析: 那这里是这么

    2024年02月21日
    浏览(38)
  • :runtime error: member access within null pointer of type ‘struct ListNode‘报错

    该问题为刷力扣时,常见报错。

    2024年02月16日
    浏览(39)
  • ElasticSearch 报错集锦及解决方法

    1. Django 扩展 Elasticsearch - 启动与关闭 - 启动报错问题解决方法 2. Centos 7 安装Elasticsearch 6.2.4 - tar 包安装 - elasticsearch head(浏览器插件)和kibana 插件 tar 安装 1. Elasticsearch启动问题小记 在笔者看来,无非就是要把解压后的 elasticsearch 放到,创建好的 用户目录下,所以就不会出现

    2024年02月15日
    浏览(46)
  • websocket报错集锦-不断更新中

    问题描述 问题分析 HTTPS基于SSL依靠证书验证服务器身份,进行通信加密,我们的域名是https.所以非SSL验证的资源时浏览器可能会阻止。 ws://调用websocket服务器或者请求http://*都会报错 问题解决 方案一:在前端将:ws:// 修改为:wss://,所有http改为https的资源 方案二:配置ngi

    2024年02月08日
    浏览(33)
  • leetcode链表题报错 runtime error: member access within null pointer of type ‘ListNode‘

    今天在做leetcode203:移除链表元素时,反复遇到了报错: runtime error: member access within null pointer of type ‘ListNode’ (solution.cpp) ,报错提示的意思是试图访问’ListNode空指针类型的成员,就浅浅记录一下修复bug的过程吧。。。。 刚开始的代码是这样的,逻辑是先建立一个头结点放

    2024年02月11日
    浏览(35)
  • uniapp系列-报错或常见问题处理集锦

    情况1:执行run dev命令后,一直就不动了,输出如下 情况2:输出如下 解决方案: 通过执行npx @dcloudio/uvm alpha升级依赖 运行之前先检查一下你的package.json 里vite版本,不要被官方给你升级太高了哦,如果有问题,可以参考下文 - 问题十八 解决方案: step1: 运行 yarn install下载依

    2023年04月16日
    浏览(38)
  • redis jedis 单元测试 报错集锦 汇总 junit

    在单元测试时,使用jedis通常遇到如下报错: 实例化报错-连接报错-权限报错。此报错是有顺序的:例如,若连接报错,说明实例化完成,即配置文件配对了。若权限报错,说明连接通了,但密码错误。若实例化就报错,说明配置文件配错了,没法启动redis客户端,更别说去连

    2024年02月11日
    浏览(41)
  • 【面试集锦 - C语言 - 单元测试】

    单元测试是针对软件中的独立单元(如函数、模块)进行的测试。下面是进行单元测试的一般步骤: 确定被测试的单元:选择要进行单元测试的具体单元,可以是函数、模块、类等。 编写测试用例:根据单元的功能和预期行为,编写多个针对不同情况的测试用例。测试用例

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包