![]() |
|
|
![]()
|
|
| Kipter |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Один товарищ, в одном из холиварров C++ vs С# в нашей разно-языковой компании программеров высказал сию мысль:
- А вот если использовать Qt4 и пользоваться только ее классами то можно не задумываться об утечки памяти! - Все классы создаваемые в динамической памяти мол сами удаляются оО Я конечно не поверил в полную обоснованность этой фразы... Но Qt я видел поверхностно, мало ли что у них там накручено. Да я понимаю что Классы-Виджеты могут удаляться сами если имеют родителя. Убиваешь родителя а он сам потомков по-delete'т. (Хотя если честно не понимаю, если я закрою окно - уже будут вызваны деструкторы окна и виджетов или оно в Hide перейдет?) Но вот что я могу сделать так:
Что то мне слабо вериться что как только я убью объект созданный на основе этого класса, то все эти пиксмапы будут тоже освобождены. Товарищ говорит можно не беспокоиться. Конечно можно будет мне это все проверить самому но увы пару дней не будет возможности собрать библиотеку QT и протестировать а разрешить спор хочеться как можно быстрее да и понять... что именно Qt обеспечивает в качестве сборки мусора и предотвращения утечек памяти. Да и другим думаю полезно будет почитать. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
При завершении программы ОС сама подчистит память. Но пока программа работает, утечка памяти будет расти. Это если объекты используют только память. А если они открывают файлы/сокеты, и не вызывать деструктор, файл/сокет не закроется, что тогда? Правильно ли освободятся ресурсы, не известно.
При динамическом выделении памяти, ответственность по освобождению памяти, лежит полностью на программисте. Добавлено через 5 минут и 30 секунд
Ничего! Это не жава -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Иногда приходится удалять явно даже объекты, которые сам не создавал, например QNetworkReply. Т.ч. товарищ не прав.
|
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
ребята просевтие по поводу примера из первого поста !
моё мнение что будет утечка памяти . Ведь Qt следит за удолением обьектов если только там указан родитель. Тоесть при удаление родителя удаляеться потомок. А если родитель не указан то следить за удалением должен разработчик. Я прав ? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
Да, будет. Добавлено через 54 секунды -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Remiznik, да, ты прав.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |