博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
double free or corruption (!prev): 0x080644c8 ***
阅读量:7031 次
发布时间:2019-06-28

本文共 1321 字,大约阅读时间需要 4 分钟。

写了一个多线程的代码,在主线程中申请了一块内存,在另一个线程中释放内存,老出错误,不知道是怎么回事。

*** glibc detected *** /home/ydx/vehicle-program/vehicle-v1.0/t: double free or corruption (!prev): 0x080644c8 ***

======= Backtrace: =========
/lib/libc.so.6[0x7c7261]
/home/ydx/vehicle-program/vehicle-v1.0/t[0x804991e]
/home/ydx/vehicle-program/vehicle-v1.0/t[0x8048fb0]
/lib/libpthread.so.0[0x8dcab5]
/lib/libc.so.6(clone+0x5e)[0x83383e]

00759000-008c7000 r-xp 00000000 fd:00 158969     /lib/libc-2.11.so

008c7000-008c8000 ---p 0016e000 fd:00 158969     /lib/libc-2.11.so
008c8000-008ca000 r--p 0016e000 fd:00 158969     /lib/libc-2.11.so
008ca000-008cb000 rw-p 00170000 fd:00 158969     /lib/libc-2.11.so

查找了好长时间的原因,都没找到,最后找到的原因原因如下

1。并没有double free,这一点是肯定的

原因:

n=get_node(STATINFO_SIZE);//申请了一个160字节的区域

调用sprintf函数向这个区域写的字节数是远大于160字节的

释放的时候就会出现这种问题

可能sprintf打印的字节数超过160字节时,没有报错,释放的时候要全部释放,超过160字节,就报出了段错误

为了解决这种无意识的错误,以后要用这个函数

黑客通常利用这类脆弱的代码来入侵看上去安全的系统。要修正这一缺陷,可以使用函数snprintf() 代替函数sprintf(),函数snprintf() 的原型为:

intsnprintf(char* buf, size_t maxlen, const char* fmt, ...); 
第二个参数定义能被写到 buf 中的字符的最大个数,不考虑格式标志以及源字符串的大小:    
snprintf(buf, 10, "%10s",p); //now safef("hello world!"); //string is chopped to "hello worl" 
相似的,使用strncpy()、strncmp()、strncat()、strnicmp() 和 strnset() 相应地代替strcmp()、strcat()、stricmp() 和 strset()。

转载于:https://www.cnblogs.com/balaamwe/archive/2012/01/12/2321074.html

你可能感兴趣的文章
CSS外边距折叠引发的问题
查看>>
【LeetCode】贪心算法--划分字母区间(763)
查看>>
Android 抖音爆红的口红挑战爬坑总结
查看>>
怎么就没发现华为Mate20 pro有这么多神奇功能!这波黑科技盘它!
查看>>
vue-cli3.0 vue.config.js 配置详解
查看>>
EOSIO 指南(启动你的节点并设置)
查看>>
一文带你看懂cookie,面试前端不用愁
查看>>
Electron + Antd + Mobx 环境搭建
查看>>
我从来不理解JavaScript闭包,直到有人这样向我解释它...
查看>>
在CentOS7上安装RabbitMQ
查看>>
作为大众熟知的电商应用,京东如何构建风控体系架构?
查看>>
js运行机制及异步编程(二)
查看>>
typescript文档化工具——Typedoc
查看>>
JS数据结构0x004:链表
查看>>
以太坊钱包开发系列1 - 创建钱包账号
查看>>
社交系统 ThinkSNS+ V2.1.1 更新播报
查看>>
理解CPU分支预测,提高代码效率
查看>>
javascript调试接口
查看>>
Python基础系列:初识python引用计数与弱引用
查看>>
javascript继承方法以及优缺点
查看>>