是valgrind抓住了Debian Wheezy上的Qt 4.8在极简主义应用程序中泄露内存

Is valgrind catching Qt 4.8 on Debian Wheezy leaking memory in minimalist app?

本文关键字:应用程序 内存 valgrind Debian Wheezy Qt 上的      更新时间:2023-10-16

我在这里读到了几个问题,人们通过valgrind运行最小的Qt程序,并发布结果。通过查看输出得出的总体结论是"好吧,没有实际的泄漏,这只是Qt如何使用内存"。

然而,我使用一个基本上为空的应用程序得到的结果看起来。。。更糟的我得到了"肯定丢失"泄漏,例如:

https://gist.github.com/3204769

==32147== LEAK SUMMARY:
==32147==    definitely lost: 848 bytes in 11 blocks
==32147==    indirectly lost: 1,756 bytes in 53 blocks
==32147==      possibly lost: 1,720 bytes in 9 blocks
==32147==    still reachable: 121,019 bytes in 2,257 blocks
==32147==         suppressed: 0 bytes in 0 blocks

运行方式:

valgrind--tool=memcheck--leak-check=yes--show reachable=yes--num callers=20--track fds=yes/测试2>valgrind.log

我对这个设置有点紧张,试图获得一个相对较新的C++11编译gcc:

  • Debian Wheezy 3.2.0-2-686-pae
  • gcc(Debian 4.7.1-2)4.7.1

如果我做sudo kwrite --version,我得到:

Qt: 4.8.1
KDE Development Platform: 4.8.4 (4.8.4)
KWrite: 4.8.3 (4.8.3)

有没有人处于类似的情况,或者知道这里发生了什么?:-/

大部分内容似乎是您正在使用的库的内部"全局"状态。有人可能会争论通过"程序终止"来清理全局资源是否是一种好的方式,但如果做得好,可能也没问题。我个人不喜欢它,因为它让检测真正的泄漏变得更加困难。。。