c++ - valgrind 是否在 Debian Wheezy 上捕捉 Qt 4.8 在极简主义应用程序中泄漏内存?

标签 c++ qt gcc c++11 valgrind

我在这里阅读了几个问题,其中人们通过 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 ./testing 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)

谁有类似情况,或者知道这是怎么回事? :-/

最佳答案

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

关于c++ - valgrind 是否在 Debian Wheezy 上捕捉 Qt 4.8 在极简主义应用程序中泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11715699/

相关文章:

qt - Qt slots可以当普通方法使用吗?

c++ - Qts 古老的 QCoreApplicationPrivate::sendPostedEvents 异常吃

gcc - objdump 反汇编与源代码不匹配

c++ - 为什么 cin 在包含字符串头后接受字符串输入

c++ - 将表示小数的 int 转换为 double 的正确方法是什么

c++ - 关闭exe并从内存运行

gcc - Cygwin gcc 需要哪些类型的库?

c++ - 创建对象数组而不调用构造函数

qt - 当选项卡到另一个组件位置时,QML 中相应的滚动

linux - 32位机器远程调试64位进程