Russian Qt Forum
Ноябрь 26, 2024, 02:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
и опять про мемори лик
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: и опять про мемори лик (Прочитано 13294 раз)
vizir.vs
Гость
Re: и опять про мемори лик
«
Ответ #15 :
Август 20, 2014, 14:14 »
Цитата: Bepec от Август 20, 2014, 14:03
Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля
Ну если с Valgrind'ом понятно что делать, то с Dr. Memory хз. Валгринда под виндой нет.
Записан
Bepec
Гость
Re: и опять про мемори лик
«
Ответ #16 :
Август 20, 2014, 14:40 »
Откидывать явные ложняки
PS а если честно - проще именно то, что я советовал
CppCheck + просмотр всех мест где динамически создаются объекты. Qt делает всё на твёрдую пятерочку, значит проблема именно в вашем распределении памяти
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: и опять про мемори лик
«
Ответ #17 :
Август 20, 2014, 14:57 »
Цитата: Bepec от Август 20, 2014, 14:03
Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля
"И тут Остапа понесло"
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: и опять про мемори лик
«
Ответ #18 :
Август 20, 2014, 15:25 »
Цитата: Bepec от Август 20, 2014, 14:03
Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля
Понял, о разных понятиях мы тут размышляем. Для меня менеджер памяти - это реализация, стоящая за malloc/new. А автоматическое управление временем жизни объекта на базе родительских отношений - это, на мой взгляд, не менеджер памяти.
Ну, в общем, даже и родительские отношения тут не причем, если не удалить самого верхнего родителя, то память потечет как миленькая. Так что valgrind все правильно ловит, а Кутешники просто чинить ленятся, т.к. течет оно в основном в синглтонах, т.е. не критично, приложение всё равно сдыхает, зачем еще дополнительно память освобождать
Записан
Гугль в помощь
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: и опять про мемори лик
«
Ответ #19 :
Август 20, 2014, 15:45 »
Цитата: navrocky от Август 20, 2014, 15:25
Понял, о разных понятиях мы тут размышляем. Для меня менеджер памяти - это реализация, стоящая за malloc/new. А автоматическое управление временем жизни объекта на базе родительских отношений - это, на мой взгляд, не менеджер памяти.
В данном случае "на мой взгляд" можно смело отбросить. Если я в деструкторе делаю delete др объекта - разве это менеджер?
Менеджер по меньшей мере должен знать сколько памяти приложение уже заняло, автоматычно освободить часть ресурсов если обнаружена нехватка и.т.п. Там мало не покажется, причем 64 bit ничего не меняют. А называть parent-child менеджером памяти - ну, мягко говоря "не очень грамотно"
Записан
Bepec
Гость
Re: и опять про мемори лик
«
Ответ #20 :
Август 20, 2014, 16:12 »
Неграмотно говорить, что этот механизм им не является
Менеджер памяти это не класс, не механизм, а абстрактное понятие
Менеджер управляет памятью. Это его главное предназначение. И управление в максимальном упрощении - это создание и корректное удаление.
Система Родитель-Ребёнок создаёт и удаляет всё корректно
Записан
qt_newer
Гость
Re: и опять про мемори лик
«
Ответ #21 :
Август 21, 2014, 10:13 »
Результат Cppcheck, действительно, выглядит повеселее. Одну ошибку находит:
"C-style pointer casting detected. C++ offers four different kinds of casts as replacements: static_cast, const_cast, dynamic_cast and reinterpret_cast. A
C-style cast could evaluate to any of those automatically, thus it is considered safer if the programmer explicitly states which kind of cast is expected."
win = (MainWindow *) QApplication::activeWindow();
Записан
Bepec
Гость
Re: и опять про мемори лик
«
Ответ #22 :
Август 21, 2014, 13:29 »
Аха
Ну как бы этот кусок у вас неверно сработает, если активным будет QWidget
Потому надо использовать qobject_cast и проверять результат на 0 после
Перечитал тему - самый простой способ проверки утечки памяти - запуск программы и работа с ней в течении некоторого времени с фиксацией занимаемой памяти
Записан
vizir.vs
Гость
Re: и опять про мемори лик
«
Ответ #23 :
Август 21, 2014, 13:46 »
Цитата: Bepec от Август 21, 2014, 13:29
Аха
Ну как бы этот кусок у вас неверно сработает, если активным будет QWidget
Потому надо использовать qobject_cast и проверять результат на 0 после
Перечитал тему - самый простой способ проверки утечки памяти - запуск программы и работа с ней в течении некоторого времени с фиксацией занимаемой памяти
Данный способ поможет узнать, есть ли утечки или нет. Но Valgrind, Dr. Memory и прочие позволяют узнать кто течет и как.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...