我通常在C++中编写我的类并检查它们是否在Linux平台上使用valgrind泄漏内存。直到所有的堆内存都被释放后,我才满意。Valgrind的Qt内存泄漏抑制文件
开始在Qt中编写代码,我发现valgrind在一个简单的项目中检测到了多少泄漏。他们太多了,很难发现我的相同泄漏。
我读了一些可以使用valgrind压缩文件的地方,它有助于滤除不必要的泄漏,但是我找不到它。
我使用的是Ubuntu 11.04 x64,g ++ 4.5,Qt 4.7。 有人知道如何处理这个问题吗?
我通常在C++中编写我的类并检查它们是否在Linux平台上使用valgrind泄漏内存。直到所有的堆内存都被释放后,我才满意。Valgrind的Qt内存泄漏抑制文件
开始在Qt中编写代码,我发现valgrind在一个简单的项目中检测到了多少泄漏。他们太多了,很难发现我的相同泄漏。
我读了一些可以使用valgrind压缩文件的地方,它有助于滤除不必要的泄漏,但是我找不到它。
我使用的是Ubuntu 11.04 x64,g ++ 4.5,Qt 4.7。 有人知道如何处理这个问题吗?
您是否看过this "Valgrind Suppression File Howto" wiki?
为了记录,Qt中有一些底层库(尤其是绘画过程中的底层库)总是会泄漏少量的内存。这些是你需要压制的。如你所说,你应该首先创建一个最小项目,运行它创建一个valgrind抑制文件,然后将该抑制文件应用到你的项目中。
我刚开始使用抑制文件来抑制来自Qt库是这样报道的所有内存:
{
<QtCore>
Memcheck:Leak
...
obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}
...
这是一个坏主意。我在自己的代码中发现了实际的新调用来自Qt容器之一(QHash)的错误,所以如果你禁止所有的Qt库,你将会错过它。 – 2017-01-13 04:31:15
谢谢。所以我应该先创建一个最小化的项目,运行它创建一个valgrind抑制文件,然后将该抑制文件应用到我的项目中,对吗? – linello 2012-02-07 11:49:23
是的,就是这样。 – UmNyobe 2012-02-07 12:11:50