【发布时间】:2018-07-10 13:40:02
【问题描述】:
我有一个 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)
【问题讨论】:
-
这个问题没有源代码有什么意义?
-
@EugeneSh。 C 代码本身似乎没有问题,正如我所说,它运行时没有任何泄漏,问题出在 bash 脚本而不是 C 代码中。此外,C 代码有几千行长,因为它似乎没有任何问题,所以我不知道要包含什么。
标签: c bash memory-leaks