使用 Valgrind 抑制 Qt 内存泄漏的文件

发布于 2025-01-03 13:45:19 字数 257 浏览 0 评论 0原文

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

开始用 Qt 编写,我发现 valgrind 检测到了多少泄漏,也是在一个简单的项目上。它们太多了,很难检测到我的相同泄漏。

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

我使用的是 Ubuntu 11.04 x64、g++ 4.5、Qt 4.7。 有人知道如何解决这个问题吗?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嗳卜坏 2025-01-10 13:45:19

您是否看过此“Valgrind 抑制文件操作指南”wiki

仅供记录,Qt 中的一些底层库(尤其是绘画过程中的库)总是会泄漏少量内存。这些是你需要压制的。

正如您所说,您应该首先创建一个最小项目,运行它来创建 valgrind 抑制文件,然后将该抑制文件应用到您的项目中。

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.

冷心人i 2025-01-10 13:45:19

请注意,许多库都有您永远无法清理的内部分配结构,这是正常的。

Just pay attention that a lot of libraries have internal allocation structures that you'll never reach to clean up, and it's normal.

口干舌燥 2025-01-10 13:45:19

我只是使用抑制文件来抑制 Qt 库报告的所有内存,如下所示:

    {
        <QtCore>
        Memcheck:Leak
        ...
        obj:/usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.6
    }

...

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
    }

...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文