Инструменты продолжают говорить мне, что у меня утечка памяти
Я новичок в 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 tree]()
![Leaked object]()
Утечка памяти увеличивается, я очень надеюсь, что это ошибка инструмента,
иначе я должен вернуться к Qt4 (и я не знаю, что у него будет такая же проблема или нет).I
не думайте, что это простое приложение может пройти проверку качества магазина приложений Mac (OSX).
Как я могу объяснить это явление? Если нет утечки памяти, я должен
не вижу никакого сообщения об объекте утечки, я прав? Ошибка Qt5.0.2?
Ответы
Ответ 1
Память действительно просачивается, что никогда не должно быть надежной структурой.
В принципе, инфраструктура должна использовать интеллектуальные указатели, а также устранять утечки памяти, которые должны отслеживаться и обрабатываться "вручную".
Если утечки не было, тогда вся память будет возвращена в кучу после использования.
Согласно bugreports.qt-project.org/browse/QTBUG-7505 эта ошибка находится в версии 4.6.0.