Инструменты продолжают говорить мне, что у меня утечка памяти - программирование
Подтвердить что ты не робот

Инструменты продолжают говорить мне, что у меня утечка памяти

Я новичок в Mac и инструментах, я использую его для тестирования моего приложения Qt, я обнаружил много просочившихся объектов, почти все из них поступают из Qt lib.I очень хорошо проверяю мои коды, но не могу найти проблема. Чтобы избежать проблемы утечки памяти, я строго соблюдаю правила RAII, всегда позволяю классу обрабатывать ресурсы, убедитесь, что у каждого виджета есть родительский элемент, этот виджет без родителя (намеренный) будет защищать с помощью умного указателя или Qt:: WA_DeleteOnClose.

Чтобы исправить предупреждение об утечке памяти, я пишу очень простое приложение Qt и использую его как тест, инструменты всегда показывают, что у меня есть некоторые утечки памяти (как график) даже самые простые Создано приложение Qt.

    #include <QApplication>
    #include <QLabel>

        int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);


        QLabel w;
        w.resize(320, 240);
        w.show();

        return a.exec();
    }

График инструментов

Call tree

Leaked object

Я немного изменяю коды и вижу, что инструменты для обнаружения утечек памяти будут продолжать расти или нет.

#include <QApplication>
    #include <QLabel>

        int main(int argc, char *argv[])
       {
        QApplication a(argc, argv);


        for(size_t i = 0; i != 100; ++i){
        QLabel w;
        w.resize(320, 240);
        w.show();
       }
       QLabel w;
       w.resize(320, 240);
       w.show();

        return a.exec();
    }

Call treeLeaked object

Утечка памяти увеличивается, я очень надеюсь, что это ошибка инструмента, иначе я должен вернуться к Qt4 (и я не знаю, что у него будет такая же проблема или нет).I не думайте, что это простое приложение может пройти проверку качества магазина приложений Mac (OSX). Как я могу объяснить это явление? Если нет утечки памяти, я должен не вижу никакого сообщения об объекте утечки, я прав? Ошибка Qt5.0.2?

4b9b3361

Ответ 1

Память действительно просачивается, что никогда не должно быть надежной структурой.

В принципе, инфраструктура должна использовать интеллектуальные указатели, а также устранять утечки памяти, которые должны отслеживаться и обрабатываться "вручную".

Если утечки не было, тогда вся память будет возвращена в кучу после использования.

Согласно bugreports.qt-project.org/browse/QTBUG-7505 эта ошибка находится в версии 4.6.0.