我无法创建一个在 valgrind 中没有超过 1K 的“肯定丢失”字节的 Qt GUI 应用程序。我已经对此进行了实验,制作了仅显示一个 QWidget 的最小应用程序,扩展了 QMainWindow;只是创建一个 QApplication 对象而不显示它或不执行它或两者兼而有之,但它们总是泄漏。
试图弄清楚这一点,我读到这是因为 X11 或 glibc 有错误,或者因为 valgrind 给出了误报。在一个论坛帖子中,似乎暗示在主函数中创建一个 QApplication 对象并返回对象的 exec() 函数,就像在教程中所做的那样,是制作 GUI 的一种“简化”方式(不一定很好, 也许?)。
valgrind 的输出确实提到了 libX11 和 libglibc,还有 libfontconfig。其余的内存丢失,5 条丢失记录,发生在??? in libQtCore.so
期间QLibrary::setFileNameAndVersion
。
如果有一种更合适的方法来创建 GUI 应用程序,甚至可以防止其中的一部分发生,它是什么?如果任何 valgrind 输出只是噪音,我如何创建一个抑制文件来抑制正确的东西?
编辑:感谢您的评论和回答!
我并不担心自己丢失的几个 kB,但是如果我不必过滤多个错误屏幕但通常可以从 valgrind 获得“OK”,那么找到我自己的内存泄漏会更容易。如果我要抑制警告,我最好知道它们是什么,对吧?
有趣的是,看看泄漏是如何被接受的!