我在这里阅读了几个问题,人们可以通过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

运行:



我在此设置方面有点不足,尝试获得相对最新的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)
    

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

    最佳答案

    其中大部分似乎是您所使用的库的内部“全局”状态。可以通过“程序终止”来清理全局资源是否是一种好的方式,但如果做得正确,那也许还可以。我个人不喜欢它,因为这样会使真正泄漏的检测更加困难...

    10-04 14:39