c – 为什么QApplication会造成内存泄漏?
发布时间:2020-12-16 07:07:17 所属栏目:百科 来源:网络整理
导读:我有一个简单的代码: #include QApplicationint main(int argc,char *argv[]){ QApplication a(argc,argv); return 0;} 我使用pro文件在Qt Creator中编译它: QT += core guigreaterThan(QT_MAJOR_VERSION,4): QT += widgetsTARGET = testLeaksTEMPLATE = a
我有一个简单的代码:
#include <QApplication> int main(int argc,char *argv[]) { QApplication a(argc,argv); return 0; } 我使用pro文件在Qt Creator中编译它: QT += core gui greaterThan(QT_MAJOR_VERSION,4): QT += widgets TARGET = testLeaks TEMPLATE = app SOURCES += main.cpp HEADERS += FORMS += 命令valgrind ./testLeaks说泄漏并打印以下内容: ==31276== HEAP SUMMARY: ==31276== in use at exit: 1,190,544 bytes in 7,267 blocks ==31276== total 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,则没有泄漏.为什么这个课会泄漏? 解决方法
如注释中所述,以下命令提供了更多信息:
valgrind --leak-check=full --show-leak-kinds=all -v ./testLeaks 另外,你减少了短输出的结束: ==3005== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2). 无论哪种方式,它很可能不是QApplication本身的错误,而是一些潜在的依赖,特别是你提到它会在libc更新后发生. 我在libc和其他低级库中遇到了一些问题,你会认为它们没有泄漏内存,而且你在一天结束时感到惊讶. 通过使用该库编写示例可以轻松检查这一点. 但是,由于它只有大约320K而且Qt应用程序(尤其是GUI)需要更多,我不认为这是一个不可忽略的数量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |