【问题标题】:Memory Corruption in c [closed]c中的内存损坏[关闭]
【发布时间】:2012-01-15 05:33:58
【问题描述】:

我在 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 命令告诉它在每次写入该位置时中断

【问题讨论】:

  • @kerek SB 我知道,但这不是我的问题。

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


【解决方案1】:

使用valgrind 找出程序中的内存泄漏。还要使用更多的调试器。

如果你想知道特定位置是如何被覆盖的,你可以使用gdbwatch命令

【讨论】:

  • +1 用于 valgrind。它会(几乎可以肯定)立即发现他的问题。
猜你喜欢
  • 2020-04-11
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多