我通常用C ++编写我的类,并检查它们是否在Linux平台上使用valgrind泄漏内存。在释放所有堆内存之前我不满意。
开始在Qt中编写,我发现valgrind检测到了多少泄漏,也是在一个简单的项目中。它们太多了,以至于难以发现同样的泄漏。
我在某处可以使用valgrind的抑制文件,这有助于过滤掉不需要的泄漏,但我找不到它。
我正在使用Ubuntu 11.04 x64,g ++ 4.5,Qt 4.7。 有人知道如何应对这个问题吗?
答案 0 :(得分:6)
你看过this "Valgrind Suppression File Howto" wiki了吗?
仅仅为了记录,Qt中有一些底层库(特别是绘制过程中的那些)总是泄漏少量内存。这些是你需要压制的。
正如您所说,您应首先创建一个最小项目,运行它以创建valgrind抑制文件,然后将该抑制文件应用于您的项目。
答案 1 :(得分:0)
请注意,很多图书馆都有内部分配结构,你永远无法清理,这是正常的。
答案 2 :(得分:-1)
我只是使用抑制文件来抑制Qt库中报告的所有内存,如下所示:
{
<QtCore>
Memcheck:Leak
...
obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}
...