记忆腐败c

时间:2011-12-07 17:35:57

标签: c linux memory-management memory-leaks g++

我在linux中使用c,当我运行main.c时,我得到以下错误:

  

*检测到glibc / asde / pasc / source / cl / weasdashanges / webasdnges:malloc():   内存损坏:0x08069098 * *

来自gdb的回溯如下:它指向函数dblogin,这很奇怪,因为我很确定不应该是问题,因为我从未在那里进行过更改。

if ((login = dblogin()) == FAIL)        return 0;

并且此代码在更改之前正常工作。

 (gdb) backtrace
    #0  0x0012d422 in __kernel_vsyscall ()
    #1  0x002f7651 in raise () from /lib/tls/i686/cmov/libc.so.6
    #2  0x002faa82 in abort () from /lib/tls/i686/cmov/libc.so.6
    #3  0x0032e49d in ?? () from /lib/tls/i686/cmov/libc.so.6
    #4  0x00338591 in ?? () from /lib/tls/i686/cmov/libc.so.6
     #5  0x0033b395 in ?? () from /lib/tls/i686/cmov/libc.so.6
     #6  0x0033c70b in calloc () from /lib/tls/i686/cmov/libc.so.6
     #7  0x001f9cd6 in ?? () from /usr/lib/libsybdb.so.5
     #8  0x001edd1a in dblogin () from /usr/lib/libsybdb.so.5
     #9  0x0804de13 in ?? ()
    #10 0x0804e01b in ?? ()
     #11 0x0804bf9f in ?? ()
    #12 0x002e3bd6 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
    #13 0x0804a031 in ?? ()

关于如何找出具体问题的任何想法?就像gdb命令告诉它在每次写入该位置时中断

1 个答案:

答案 0 :(得分:4)

使用valgrind查找程序中的内存泄漏。还可以使用更多的调试器。

如果您想知道如何覆盖特定位置,可以使用gdb watch 命令