Russian Qt Forum

Qt => Общие вопросы => Тема начата: ecspertiza от Декабрь 16, 2010, 13:12



Название: Немного про утечки памяти
Отправлено: ecspertiza от Декабрь 16, 2010, 13:12
Решил свой проект, проверить на утечки памяти, и обнаружил интересную вещь, при создании виджета в списке и при по следующем удалении освобождается не вся память.

Вот пример кода
Код:
    QList<QWidget *> listWidget;

    for (int i = 0; i < 10; ++i)
        listWidget.append(new QWidget());

    while(!listWidget.isEmpty())
        delete listWidget.takeFirst();

с помощью дебагера вижу что освобождается не вся память, а если тоже самое сделать с int то все хорошо. Пример кода прилагаю в аттаче. А и собственно вопрос :) С чем это может быть связано и как лечить? Есть подозрение что Widget при создании тупо копируется ,а память не освобождается. Или освобождается ,но где то внутри и этого не видно. Стоит ли обращать внимание на эту тему?

Вывод дебагера видно в файле memoryleak.txt и debugmemorylog.txt ф папке с бинарником, собирал с помощью MinGW, Qt 4.7.1


Название: Re: Немного про утечки памяти
Отправлено: sendevent от Декабрь 16, 2010, 13:44
WinXP Pro SP3, MSVC 8.0, Qt 4.6.3:
Цитата: memoryleak.txt
-----------------------------------------------------------
Total Unfreed: 0 bytes
В debugmemorylog.txt allocated/freed совпадают попарно.
С qDeleteAll картина та же.
Или не то смотрю?


Название: Re: Немного про утечки памяти
Отправлено: ecspertiza от Декабрь 16, 2010, 13:50
Смотришь то, возможно есть разница в компиляторе, я собирал с помощью MinGW.