Russian Qt Forum
Март 28, 2024, 14:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: и опять про мемори лик  (Прочитано 12266 раз)
vizir.vs
Гость
« Ответ #15 : Август 20, 2014, 14:14 »

Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля Веселый

Ну если с Valgrind'ом понятно что делать, то с Dr. Memory хз. Валгринда под виндой нет.
Записан
Bepec
Гость
« Ответ #16 : Август 20, 2014, 14:40 »

Откидывать явные ложняки Улыбающийся

PS а если честно - проще именно то, что я советовал Улыбающийся CppCheck + просмотр всех мест где динамически создаются объекты. Qt делает всё на твёрдую пятерочку, значит проблема именно в вашем распределении памяти Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Август 20, 2014, 14:57 »

Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля Веселый
"И тут Остапа понесло"  Улыбающийся
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #18 : Август 20, 2014, 15:25 »

Хватит толочь воду в ступе. Valgrind не может правильно оценить утечки в Qt без дополнительных телодвижений.
И да, менеджер памяти в Qt есть, упрощенный - так называемая система родительского контроля Веселый

Понял, о разных понятиях мы тут  размышляем. Для меня менеджер памяти - это реализация, стоящая за malloc/new. А автоматическое управление временем жизни объекта на базе родительских отношений - это, на мой взгляд, не менеджер памяти.

Ну, в общем, даже и родительские отношения тут не причем, если не удалить самого верхнего родителя, то память потечет как миленькая. Так что valgrind все правильно ловит, а Кутешники просто чинить ленятся, т.к. течет оно в основном в синглтонах, т.е. не критично, приложение всё равно сдыхает, зачем еще дополнительно память освобождать Улыбающийся
Записан

Гугль в помощь
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Август 20, 2014, 15:45 »

Понял, о разных понятиях мы тут  размышляем. Для меня менеджер памяти - это реализация, стоящая за malloc/new. А автоматическое управление временем жизни объекта на базе родительских отношений - это, на мой взгляд, не менеджер памяти.
В данном случае "на мой взгляд" можно смело отбросить. Если я в деструкторе делаю delete др объекта - разве это менеджер? Улыбающийся Менеджер по меньшей мере должен знать сколько памяти приложение уже заняло, автоматычно освободить часть ресурсов если обнаружена нехватка и.т.п. Там мало не покажется, причем 64 bit ничего не меняют. А называть parent-child менеджером памяти - ну, мягко говоря "не очень грамотно"  Улыбающийся
Записан
Bepec
Гость
« Ответ #20 : Август 20, 2014, 16:12 »

Неграмотно говорить, что этот механизм им не является Веселый

Менеджер памяти это не класс, не механизм, а абстрактное понятие Улыбающийся

Менеджер управляет памятью. Это его главное предназначение. И управление в максимальном упрощении - это создание и корректное удаление.
Система Родитель-Ребёнок создаёт и удаляет всё корректно Улыбающийся


Записан
qt_newer
Гость
« Ответ #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
Гость
« Ответ #22 : Август 21, 2014, 13:29 »

Аха Улыбающийся

Ну как бы этот кусок у вас неверно сработает, если активным будет QWidget Улыбающийся Потому надо использовать qobject_cast и проверять результат на 0 после Улыбающийся

Перечитал тему - самый простой способ проверки утечки памяти - запуск программы и работа с ней в течении некоторого времени с фиксацией занимаемой памяти Улыбающийся
Записан
vizir.vs
Гость
« Ответ #23 : Август 21, 2014, 13:46 »

Аха Улыбающийся

Ну как бы этот кусок у вас неверно сработает, если активным будет QWidget Улыбающийся Потому надо использовать qobject_cast и проверять результат на 0 после Улыбающийся

Перечитал тему - самый простой способ проверки утечки памяти - запуск программы и работа с ней в течении некоторого времени с фиксацией занимаемой памяти Улыбающийся
Данный способ поможет узнать, есть ли утечки или нет. Но Valgrind, Dr. Memory и прочие позволяют узнать кто течет и как.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.