C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 为什么QApplication会造成内存泄漏?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的代码

@H_403_11@#include <QApplication> int main(int argc,char *argv[]) { QApplication a(argc,argv); return 0; }

我使用pro文件在Qt Creator中编译它:

@H_403_11@QT += core gui greaterThan(QT_MAJOR_VERSION,4): QT += widgets TARGET = testLeaks TEMPLATE = app sourcES += main.cpp HEADERS += FORMS +=

命令valgrind ./testLeaks说泄漏并打印以下内容

@H_403_11@==31276== HEAP SUMMary: ==31276== in use at exit: 1,190,544 bytes in 7,267 blocks ==31276== @R_479_10586@l heap usage: 46,096 allocs,38,829 frees,6,716,079 bytes allocated ==31276== ==31276== LEAK SUMMary: ==31276== definitely lost: 2,788 bytes in 11 blocks ==31276== indirectly lost: 7,065 bytes in 182 blocks ==31276== possibly lost: 318,238 bytes in 1,233 blocks ==31276== still reachable: 862,453 bytes in 5,841 blocks ==31276== suppressed: 0 bytes in 0 blocks

如果我评论QApplication,则没有泄漏.为什么这个课会泄漏?

解决方法

如注释中所述,以下命令提供了更多信息:

@H_403_11@valgrind --leak-check=full --show-leak-kinds=all -v ./testLeaks

另外,你减少了短输出的结束:

@H_403_11@==3005== ERROR SUMMary: 0 errors from 0 contexts (suppressed: 2 from 2).

无论哪种方式,它很可能不是QApplication本身的错误,而是一些潜在的依赖,特别是你提到它会在libc更新后发生.

我在libc和其他低级库中遇到了一些问题,你会认为它们没有泄漏内存,而且你在一天结束时感到惊讶.

通过使用该库编写示例可以轻松检查这一点.

但是,由于它只有大约320K而且Qt应用程序(尤其是GUI)需要更多,我不认为这是一个不可忽略的数量.

大佬总结

以上是大佬教程为你收集整理的c – 为什么QApplication会造成内存泄漏?全部内容,希望文章能够帮你解决c – 为什么QApplication会造成内存泄漏?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。