当前位置: 技术问答>linux和unix
程序運行後出錯的奇怪訊息
来源: 互联网 发布时间:2016-03-28
本文导语: *** glibc detected *** ./testjpg: double free or corruption (!prev): 0x080dda90 *** ======= Backtrace: ========= [0x806810e] [0x806b7eb] [0x8049c07] [0x80492f1] [0x8049458] [0x805d71b] [0x8048151] ======= Memory map: ======== 08048000-080d9000 r-xp 00000000 21:01 8...
*** glibc detected *** ./testjpg: double free or corruption (!prev): 0x080dda90 ***
======= Backtrace: =========
[0x806810e]
[0x806b7eb]
[0x8049c07]
[0x80492f1]
[0x8049458]
[0x805d71b]
[0x8048151]
======= Memory map: ========
08048000-080d9000 r-xp 00000000 21:01 8422378 /mnt/testjpg
080d9000-080da000 rw-p 00091000 21:01 8422378 /mnt/testjpg
080da000-0812a000 rw-p 080da000 00:00 0 [heap]
b7e00000-b7e21000 rw-p b7e00000 00:00 0
b7e21000-b7f00000 ---p b7e21000 00:00 0
b7f03000-b7f41000 rw-p b7f03000 00:00 0
bff05000-bff1a000 rw-p bffeb000 00:00 0 [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
已經終止
這代表著什麼樣的問題啊?
======= Backtrace: =========
[0x806810e]
[0x806b7eb]
[0x8049c07]
[0x80492f1]
[0x8049458]
[0x805d71b]
[0x8048151]
======= Memory map: ========
08048000-080d9000 r-xp 00000000 21:01 8422378 /mnt/testjpg
080d9000-080da000 rw-p 00091000 21:01 8422378 /mnt/testjpg
080da000-0812a000 rw-p 080da000 00:00 0 [heap]
b7e00000-b7e21000 rw-p b7e00000 00:00 0
b7e21000-b7f00000 ---p b7e21000 00:00 0
b7f03000-b7f41000 rw-p b7f03000 00:00 0
bff05000-bff1a000 rw-p bffeb000 00:00 0 [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
已經終止
這代表著什麼樣的問題啊?
|
double free or corruption
指针释放问题,要么是二次释放,要么指针本来就为NULL
|
不是一个叫double free的 东西,double free是说你free同一个地址两次,第一次是真正释放(当然,你得先申请了这个内存malloc),释放了之后又去释放一次,就是所谓的double free,这个现象一般出现在多个指针操作同一块内存。
你的这个问题不一定是double free,系统只是个提示,有这个可能,但是这方便的问题一般总的来说就是你操作指针有错误。你得检查你free内存的相应代码,看看到底哪里有错误,我举几个容易出问题的例子:
1、double free,刚才说了。
2、free(NULL)
3、内存越界写
|
设置环境变量MALLOC_CHECK_=0