Почему QApplication дает утечки памяти?

У меня есть простой код:

#include <QApplication>

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

Я компилирую его в Qt Creator, используя pro-файл:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = testLeaks
TEMPLATE = appSOURCES += 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, нет никаких утечек. Почему этот класс дает утечки?

4

Решение

Как отмечено в комментариях, следующая команда предоставляет дополнительную информацию:

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) потребуют намного больше, я бы не стал рассматривать это как ничтожную сумму.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]