Qt内存的抑制文件与Valgrind泄漏

时间:2012-02-07 10:08:27

标签: c++ qt memory-leaks valgrind suppress-warnings

我通常用C ++编写我的类,并检查它们是否在Linux平台上使用valgrind泄漏内存。在释放所有堆内存之前我不满意。

开始在Qt中编写,我发现valgrind检测到了多少泄漏,也是在一个简单的项目中。它们太多了,以至于难以发现同样的泄漏。

我在某处可以使用valgrind的抑制文件,这有助于过滤掉不需要的泄漏,但我找不到它。

我正在使用Ubuntu 11.04 x64,g ++ 4.5,Qt 4.7。 有人知道如何应对这个问题吗?

3 个答案:

答案 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
    }

...