您的位置:首页 > 运维架构 > Linux

Linux 下的各种内存错误

2013-04-24 18:08 155 查看
这两天在写一个多线程的代码,并行求最大独立子集,由于一个欠考虑的循环赋值导致了coredump,调试过程太曲折了。。为了记下这个教训,整理点内存错误的一些原因。

free(): invalid next size (fast): 0x095f6070

是由于对指针0x095f6070指向的空间,进行写操作超过了他实际申请的大小

*** glibc detected *** free(): invalid pointer:

当一个指针或者该指针所指向的内存单元成为无效单元,或者内存中分配的数据结构被破坏时,就会造成内存错误。指针未被初始化,指针被初始化为一个无效地址,指针被不小心错误地修改,在与指针相关联的内存区域被释放后使用该指针(这种指针被称为虚悬(dangling)指针),这些都会使指针变为无效指针。当通过一个错误指针或者虚悬指针对内存进行写入,或者将指针强制转换为不匹配的数据结构,又或者是写数据越界,内存自身也会遭到破坏。删除未被初始化的指针、删除非堆指针、多次删除同一指针或者覆盖一个指针的内部数据结构,都会造成内存分配系统错误。

*** glibc detected *** malloc(): memory corruption:

一般是由于对内存的写越界,从而导致内存的管理信息遭到破坏。

*** glibc detected *** double free or corruption (out): 0x00000000005c18a0 ***

double free 就不解释了,corruption错误同上,主要也是由于内存的越界写。

*** glibc detected *** corrupted double-linked list: 0x00000000005ab150 ***

待续。。希望大家给建议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: