C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***
.
.
.
.
.
LZ 今天在写一个 Socket 程序的时候使用 malloc(3) 在堆上动态分配了一个结构体的空间,在使用完之后用 free(3) 函数释放空间的时候报 invalid next size 这样的一个错误,经过了两个小时的调试,最后发现是因为粗心越界导致的。
LZ 把这个错误缩减为一个最简单的模型发布出来:
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 int main (void) 6 { 7 char *p = NULL; 8 9 // 在堆空间申请 8 字节的内存 10 p = malloc(8); 11 12 // 实际使用超过 8 字节 13 strncpy(p, "abcd", 128); 14 // 可以正常打印 15 printf("p = %s\n", p); 16 17 // 释放内存时会报 invalid next size 错误 18 free(p); 19 20 return 0; 21 }
编译运行:
>$ gcc -Wall free.c -o free >$ ./free p = abcdefghijklmn *** glibc detected *** ./free: free(): invalid next size (fast): 0x00000000020c3010 *** ...此处生略 n 行...
打印是不受影响的,但其实在 strncpy(3) 的时候就已经越界了,所以发生什么情况都是正常的。
另外对于上面这个栗子,使用 strcpy(3) 替代 strncpy(2) 就不会报错了,但是一旦要拷贝的字符超过了 8 个字节,依然可能引发错误。
所以大家在使用内存的时候一定要注意长度,千万不可越界。
C 语言 *** glibc detected *** free(): invalid next size (fast): 0x0000000000be1010 ***相关推荐
- free(): invalid next size (fast):错误及解决方案
./a.out: free(): invalid next size (fast): 0x000000000c29d010 *** 今天在翻写算法的时候,出现了以上的错误 这种错误的原因: 一般是对内 ...
- *** glibc detected *** java: free(): invalid next size (fast): 0x00000000024b19d0 ***
2019独角兽企业重金招聘Python工程师标准>>> 是内存泄露的问题. (1)一般是free了没有分配的内存 (2)是malloc函数分配的堆空间操作越界了.例如strcpy(s ...
- 内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]...
前段时间开发的一个后端C模块上线后,线上出core,初始时,因为訪问压力不大,所以崩溃是上线3天左右出现的.当时用gdb跟进调用堆栈并检查源代码,发现出core位置的代码沒有啥问题.因为当时开发任务较 ...
- *** glibc detected *** malloc(): memory corruption
以下错误,发现是由于memset越界写引起的. *** glibc detected *** malloc(): memory corruption: 0x09eab988 *** 在Linux Se ...
- C++编程问题--glibc detected *** ./a.out: munmap_chunk(): invalid pointer: xxxxxx
编写了一个链表操作的程序,如下: #include <iostream>using namespace std;class Element { public:Element* prev;E ...
- C语言扩展动态内存报错:realloc(): invalid next size: 0x0000000002365010 ***
晚上被这个内存扩展崩溃的问题折腾的有点崩溃,当答案揭晓的那一刻,恍然大悟,原来如此简单. 练习题目:输入一个字符串,根据字母进行排序,说白了就是一个简单的冒泡 #include <stdio.h ...
- glibc detected *** double free 错误解决方法
glibc detected *** double free 错误解决方法 定位问题:*** glibc detected *** : double free or corruption (!prev ...
- 【kafka】kafka 启动报错 InvalidReceiveException: Invalid receive (size = -720899)
1.概述 kafka启动报错InvalidReceiveException: Invalid receive (size = -720899) 参考文章:https://bbs.csdn.net/to ...
- invalid button size rid: 5fd188c8-1d752f57-0d53f85f
微信公众号菜单修改时,提示错误:invalid button size rid: 5fd188c8-1d752f57-0d53f85f 经测试发现,提交的json数据中不能包含 :"sub_ ...
最新文章
- Python基础18-常用模块之os、sys、json、pickle、shelve、xml、re、logging、configparse、hashlib等
- 相似图片检测:感知哈希算法之aHash,dHash,pHash的Python实现
- 九种东西吃多会...
- 中文NER任务实验小结:BERT-MRC的再优化
- [转] Transformer图解
- 初级线段树讲解---转
- Remmarguts' Date(POJ2449+最短路+A*算法)
- Win 2003系统传真功能的配置及使用
- Eclipse ADT 使用空格替代Tab键缩进整块整块代码
- mysql 数据库隔离级别_彻底搞懂mysql数据库四种隔离级别,实验实战
- Android 四大组件学习之Service七
- 软件开发模型:瀑布模型,增量模型,原型模型,螺旋模型,喷泉模型,敏捷开发模型
- Mac 下拷贝文件到移动硬盘
- Windows server 2008 R2安装详细教程
- java pfx 和cer_pfx证书和CER证书
- 关于PhotoShop中保存CMYK格式TIFF文件在GDI+错误地显示颜色的问题解决方法
- 河南省高中计算机会考难不难,关于河南省的高中会考我想说。。。
- C#:实现字数统计函数算法(附完整源码)
- [Java实战][仅需1步]企业微信群机器人[0基础接入]
- 将netcore发布到docker的其他端口上
热门文章
- Android应用程序组件Content Provider的启动过程源代码分析(1)
- 你的设备中缺少重要的安全和质量修复_城市排水管道三类非开挖修复技术汇总...
- python实现ks算法_Python实现Dijkstra算法
- Xamarin Essentials教程数据传输DataTransfer
- swift1.2语言函数和闭包函数介绍
- 切割图形_3D打印、激光切割、图形化编程,六一科普活动喊你来报名啦!
- gets会读取回车键吗_Linux Shell 读取从键盘输入的数据
- python寻找相似用户_Python 寻找相近的用户
- [unreal4入门系列之四] 熟悉虚幻4项目浏览器界面
- 他22岁在家自造芯片,性能接近英特尔初代,连光刻机都有解决方案