free的时候ABORTING: LIBC: ARGUMENT IS INVALID HEAP

今天和一个韩国公司联调, 在c代码中爆出如下错误, 让人很郁闷

11-02 16:09:19.055: A/libc(7453): @@@ ABORTING: LIBC: ARGUMENT IS INVALID HEAP ADDRESS IN dlfree addr=0xb84b7d78

11-02 16:09:19.055: A/libc(7453): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 7453 (aon.aremotecool)

最后搜索资料发现有人遇到了相似的错误, 这个错误主要是 越界读写 造成的

例子:

char* format = (char*)malloc(16); //16的倍数

format[16] = "\0";

free(format);

format最大的index是15 操作16是没问题的, 是释放 fromat的时候就开始崩溃了

以后还是注意一些 c语言字符串造成的问题

参考

内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]

如何实现一个malloc

时间: 2024-11-08 21:34:50

free的时候ABORTING: LIBC: ARGUMENT IS INVALID HEAP的相关文章

error while loading shared libraries: /usr/lib64/libc.so.6: invalid ELF header

在安装一个程序的时候提示libc.so.6过旧,但是查看libc.so的版本是最新的,于是尝试使用尝试软链接  ln -s /usr/lib64/libc.so /usr/lib64/libc.so.6 , 悲剧的事情发生了! 几乎所有的linux命令都依赖于libc.so,libc.so.6是一个动态链接库文件,是GNU C Library的一个共享函数库,软链接到不同的版本上才能起作用. google的一番,发现很多同学进入了linux rescue急救模式进行文件替换,复制等.好吧,哥也试

WAS_启动报mbind:Invalid argument

***********************************************声明***********************************************************************  原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/39697853 *******

Linux中的常用内存问题检测工具

原文地址:http://blog.csdn.net/jinzhuojun/article/details/46659155 C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的,或者内存管理信息都已被破坏,并且还是随机出现的,那就比较麻烦了.当然,祼看code打log是一个办法,但其效率不是太高,尤其是在运行成本高或重现概率低的情况下.另外,静态检查

【转】高通平台android 环境配置编译及开发经验总结

原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流程分析 qcril 流程分析,设置sim卡锁 python scons 语法学习 Python 语言之 scons 工具流程分析: 1.2 搭建高通平台环境开发环境 高通and

python命令行解析工具argparse模块【3】

上一节,我们讲解了ArgumentParser对象,这一节我们将学习这个对象的add_argument()方法. add_argument()方法的定义了如何解析一个命令行参数,每个参数都有各自独立的设置参数. 1.name or flags add_argument()必须知道参数是可选的还是必须的位置参数,第一个传递给add_arguments的参数必须是可选参数或者是位置参数,例如,下面是可选参数. >>> parser.add_argument('-f','--foo') 而位置

c++11实现一个简单的lexical_cast

boost中有一个lexical_cast可以用统一的方式来做基本类型之间的转换,比如字符串到数字,数字到字符串,bool和字符串及数字之间的相互转换.boost::lexical_cast的用法比较简单: #include <boost/lexical_cast.hpp> #include <iostream> #include <string> #define ERROR_LEXICAL_CAST 1 int main() { using boost::lexica

【字源大挪移—读书笔记】 第二部分:字根

[2] 字根:[2.1]表示[否定]的字根.[2.2]表示[方位]的字根.[2.3]表示[程度]的字根.[2.4]表示[状态]的字根.[2.5]表示[现象]的字根.[2.6]表示[身体]的字根.[2.7]表示[姿势]的字根.[2.8]表示[心,心里活动]的字根.[2.9]表示[行为动作]的字根.[2.10]表示[感官动作]的字根.[2.11]表示[感觉]的字根.[2.12]表示[生命]的字根.[2.13]表示[死亡]的字根.[2.14]表示[社会]的字根 [2.1]表示[否定]的字根 -neg-

iOS -- warnings

Semantic Warnings Warning Message -WCFString-literal input conversion stopped due to an input byte that does not belong to the input codeset UTF-8 -WNSObject-attribute         __attribute ((NSObject)) may be put on a typedef only, attribute is ignore

python命令行解析工具argparse模块【4】

上一节我们讲解了add_argument()方法,这一节我们将学习parse_args()方法. parse_args()方法的作用是解析命令行参数,并返回解析之后的命名空间.默认的,参数从sys.argv中获取.       1.参数值语法 parse_args()支持多种语法来解析参数,最简单的方式如下,参数与值分开传递 >>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument