gpt4 book ai didi

c - C 程序从 bash 脚本运行时出现内存泄漏

转载 作者:行者123 更新时间:2023-11-30 19:57:13 25 4
gpt4 key购买 nike

我有一个 C 程序,它接受各种命令行参数,即

./Coupled arg1 argv2

当我用 valgrind 运行它时

valgrind ./Coupled arg1 arg2

我没有发现内存泄漏。但是当我使用名为 run 的 bash 脚本时,其形式为

arg1=thing1
arg2=thing2

./Coupled $thing1 $thing2

然后运行

valgrind ./run

我遇到了很多仍然可达的内存泄漏。我读到,仍然可达的内存泄漏并不是一个大问题,但我很想知道为什么会发生这种情况?当使用 --leak-check=full --show-leak-kinds=all 标志运行 valgrind 时,输出示例位(完整的 valgrind 输出有很多页长)

==4518== 1 bytes in 1 blocks are still reachable in loss record 1 of 269
==4518== at 0x4C29BE3: malloc (vg_replace_malloc.c:299)
==4518== by 0x46A3DA: xmalloc (in /usr/bin/bash)
==4518== by 0x437219: make_variable_value (in /usr/bin/bash)
==4518== by 0x438230: ??? (in /usr/bin/bash)
==4518== by 0x43A35E: initialize_shell_variables (in /usr/bin/bash)
==4518== by 0x41DD92: ??? (in /usr/bin/bash)
==4518== by 0x41C482: main (in /usr/bin/bash)

最佳答案

valgrind ./run 将调试 shell 而不是您的程序。

看一下输出,看看它是如何提到的(例如)

==4518== by 0x41C482: main (in /usr/bin/bash)

[强调我的]

如果你想调试你的程序,你需要在脚本中运行valgrind:

arg1=thing1
arg2=thing2

valgrind ./Coupled $thing1 $thing2

关于c - C 程序从 bash 脚本运行时出现内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51266813/

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