我一直在 Fedora 中开发 BaseX XML 数据库的 C++ 客户端。客户端的原始版本是在 Eclipse 中开发的,由一个测试程序和一些允许与数据库通信的源文件组成。该代码的 Eclipse 版本在执行时不会给出错误消息。 对于程序的下一个版本,我使用了用于通信的文件来开发共享库。我所要做的就是添加一个公共标头。
现在可以在本地安装共享库。 命令
LD_LIBRARY_PATH=~/lib/lib64 ./libTest
给出与原始版本相同的结果,但最终为
double free or corruption (out)
Aborted (core dumped)
Valgrind 不能用于检查库。而且我也没有收到有关核心转储位置的消息。
如何解决库中的内存问题?
你尝试过吗
LD_LIBRARY_PATH=~/lib/lib64 valgrind ./libTest
?
最好使用 ~/lib/lib64 中使用 debuginfo 构建的库。
Memcheck 应该检测并报告双重释放。