valgrind 能否在我从单独目录中的 C 可执行文件使用的静态库中发现内存泄漏?
Can valgrind pick up a memory leak in a static library that im using from a C executable in a separate directory?
我在静态库中创建了一个 main.c 文件来测试我的静态库是否工作(它包含一个主要的 function/method 当然使用该库)所以我的库可以正常工作。然后我在 C 文件中使用了那个库,比如来自另一个目录的 myprog。我故意将内存泄漏到静态库中,然后返回到另一个目录并通过 Valgrind 运行 myprog 看是否可以捡起它。它不能。为什么?当我回到 main.c 和 运行 时,通过 Valgrind 显示有意泄漏,但在 myprog.
中没有显示
我觉得这很有趣。为什么会发生这种情况,有人可以确认我的发现是否正确吗?
解决方法:
简短回答:是的 valgrind 可以发现静态库中的内存泄漏。
原因:
道歉。我是 CMake 的新手。在故意向我重新编译的库添加内存泄漏之后(或者我认为)我不知道我必须在重新编译之前删除所有相关的 CMake 文件(这真的很烦人)我假设输入 cmake .
和然后 make
就足够了)但事实并非如此。
我应该在使用静态库的目录中做的是
运行
make clean
然后 make
我在静态库中创建了一个 main.c 文件来测试我的静态库是否工作(它包含一个主要的 function/method 当然使用该库)所以我的库可以正常工作。然后我在 C 文件中使用了那个库,比如来自另一个目录的 myprog。我故意将内存泄漏到静态库中,然后返回到另一个目录并通过 Valgrind 运行 myprog 看是否可以捡起它。它不能。为什么?当我回到 main.c 和 运行 时,通过 Valgrind 显示有意泄漏,但在 myprog.
中没有显示我觉得这很有趣。为什么会发生这种情况,有人可以确认我的发现是否正确吗?
解决方法: 简短回答:是的 valgrind 可以发现静态库中的内存泄漏。
原因:
道歉。我是 CMake 的新手。在故意向我重新编译的库添加内存泄漏之后(或者我认为)我不知道我必须在重新编译之前删除所有相关的 CMake 文件(这真的很烦人)我假设输入 cmake .
和然后 make
就足够了)但事实并非如此。
我应该在使用静态库的目录中做的是
运行
make clean
然后 make