问题
I usually write my classes in C++ and check if they leak memory using valgrind on Linux platform. I'm not satisfied until all the heap memory is freed.
Starting to write in Qt, I found how many leaks valgrind detects, also on a simple project. They are so many that it's difficult to detect my same leaks.
I read somewhere that is possibile to use a suppression files for valgrind which helps filtering out the unwanted leaks, but I can't find it.
I'm using Ubuntu 11.04 x64, g++ 4.5, Qt 4.7. Does somebody know how to cope with this problem?
回答1:
Did you look at this "Valgrind Suppression File Howto" wiki?
Just for the record there are some underlying libraries in Qt (especially the ones in the painting process) which always leak small amount of memory. These are the one you need to suppress.
As you said, you should first create a minimal project, run it to create a valgrind suppression file and then apply that suppression file to your project.
回答2:
Just pay attention that a lot of libraries have internal allocation structures that you'll never reach to clean up, and it's normal.
回答3:
I Just using suppression file to suppress all the memory reported from Qt library like this:
{
<QtCore>
Memcheck:Leak
...
obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
}
...
来源:https://stackoverflow.com/questions/9174326/suppression-files-for-qt-memory-leaks-with-valgrind