gpt4 book ai didi

c - 如何修复 Valgrind 日志中的内存泄漏

转载 作者:行者123 更新时间:2023-11-30 14:23:23 26 4
gpt4 key购买 nike

这是我第一次看到 valgrind 日志,这个日志是其他用户提供的(我无法运行 valgrind ,因为它不支持 STLinux (sh4)

为了学习如何使用 valgrind 日志修复内存泄漏,如果有任何专家,选择甚至是波纹管 valgrind 错误日志中的一行(并告诉我们,他打算修复的 valgrind 错误行并发布他们的修复(补丁),我们将不胜感激源代码)

然后,我们将学习如何修复 valgrind 日志中的内存泄漏,然后我将自己完成剩下的修复工作(我只需要一个示例修复)

这是应用程序 trac 浏览器(源代码): http://www.streamboard.tv/oscam/browser/trunk/?rev=5375

如果有专家能看一下这些日志(我真的需要帮助),我将不胜感激,这里有 4 个 valgrind 日志:

http://www.4shared.com/office/04seUumN/valgrind_2.html

http://www.4shared.com/office/WYmfxICb/valgrindlog.html

http://www.4shared.com/office/WGwlKeUK/valgrind.html

http://www.4shared.com/office/mkX4FAzd/valgrind_1.html

附:

  1. 由于我自己无法运行 valgrind,请选择内存损失最大(泄漏)的内存泄漏,然后,我可以用我的眼睛监视这些改进(top 命令,ps -aux)

  2. 我对修复内存泄漏的关注主要限于这些模块(对我来说,优先级(重要性)在于它们的编号顺序(我的意思是,使用 module-datastruct-list.c 修复内存泄漏位于对我来说最重要的是,....)

    • 模块数据结构列表.c
    • oscam-garbage.c
    • oscam.c
    • 模块-cccam.c
    • 模块-dvbapi.c

提前致谢

最佳答案

我很久以前使用过 Valgrind,所以我不太记得如何使用它,但我知道它相当简单。 Valgrind 日志显示程序的每次内存泄漏,这些泄漏是由于您的代码以及您从库中调用的代码造成的。对于每次泄漏,都会显示函数调用堆栈,如下所示:

==5313== Invalid write of size 4
==5313== at 0x8048A27: test_2() (valgrind-tests.cc:37)
==5313== by 0x8048CDF: main (valgrind-tests.cc:134)
==5313== by 0x215BBE: __libc_start_main (in /lib/libc-2.3.2.so)
==5313== by 0x8048910: (within /home/newren/examples/valgrind-tests)
==5313== Address 0x1B3E024 is 0 bytes inside a block of size 4 free'd
==5313== at 0x5419C5: __builtin_delete (vg_replace_malloc.c:244)
==5313== by 0x5419E3: operator delete(void*) (vg_replace_malloc.c:253)
==5313== by 0x8048A20: test_2() (valgrind-tests.cc:36)
==5313== by 0x8048CDF: main (valgrind-tests.cc:134)
==5313== by 0x215BBE: __libc_start_main (in /lib/libc-2.3.2.so)
==5313== by 0x8048910: (within /home/newren/examples/valgrind-tests)

这意味着您尝试在内存中写入 4 个字节,但您无权访问这些字节。在本例中,此问题位于“valgrind-tests.cc”的第 37 行。

valgrind 的主要问题是,正如我之前所说,它会显示您使用的库中的内存泄漏或内存警告(如忘记的指针)。要清理日志,您可以编写名为“suppression files ”的 valgrind 规则文件。

更多信息herehere .

关于c - 如何修复 Valgrind 日志中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12932647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com