Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT] Действительно нет утечек? Неужели могу забыть про delete ? 
:(
    Опции темы
Kipter
Дата 2.10.2009, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Один товарищ, в одном из холиварров C++ vs С# в нашей разно-языковой компании программеров высказал сию мысль: 
- А вот если использовать Qt4 и пользоваться только ее классами то можно не задумываться об утечки памяти!
- Все классы создаваемые в динамической памяти мол сами удаляются оО

Я конечно не поверил в полную обоснованность этой фразы... Но Qt я видел поверхностно, мало ли что у них там накручено.

Да я понимаю что Классы-Виджеты могут удаляться сами если имеют родителя. Убиваешь родителя а он сам потомков по-delete'т.
(Хотя если честно не понимаю, если я закрою окно - уже будут вызваны деструкторы окна и виджетов или оно в Hide перейдет?)

Но вот что я могу сделать так:

Код

class Tralalala : public QObject {
...
Tralalala() {
  for(int i; i <100; i++)
     QPixmap *image = new QPixmap("OutOfMemory.jpg");
}

~Tralalala() { }
...
};


Что то мне слабо вериться что как только я убью объект созданный на основе этого класса, то все эти пиксмапы будут тоже освобождены.
Товарищ говорит можно не беспокоиться.

Конечно можно будет мне это все проверить самому но увы пару дней не будет возможности собрать библиотеку QT и протестировать а разрешить спор хочеться как можно быстрее да и понять... что именно Qt обеспечивает в качестве сборки мусора и предотвращения утечек памяти. Да и другим думаю полезно будет почитать.

PM MAIL   Вверх
andrew_121
Дата 2.10.2009, 03:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



При завершении программы ОС сама подчистит память. Но пока программа работает, утечка памяти будет расти. Это если объекты используют только память. А если они открывают файлы/сокеты, и не вызывать деструктор, файл/сокет не закроется, что тогда? Правильно ли освободятся ресурсы, не известно.
При динамическом выделении памяти, ответственность по освобождению памяти, лежит полностью на программисте.

Добавлено через 5 минут и 30 секунд
Цитата(Kipter @  2.10.2009,  03:23 Найти цитируемый пост)
что именно Qt обеспечивает в качестве сборки мусора и предотвращения утечек памяти

Ничего! Это не жава smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
SABROG
Дата 2.10.2009, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Иногда приходится удалять явно даже объекты, которые сам не создавал, например QNetworkReply. Т.ч. товарищ не прав.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Remiznik
Дата 2.10.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



ребята просевтие по поводу примера из первого поста !
моё мнение что будет утечка памяти . Ведь Qt следит за удолением обьектов если только там указан родитель. Тоесть при удаление родителя удаляеться потомок.  А если родитель не указан то следить за удалением должен разработчик. 
Я прав ? 
PM MAIL   Вверх
andrew_121
Дата 2.10.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(Remiznik @  2.10.2009,  23:36 Найти цитируемый пост)
моё мнение что будет утечка памяти

Да, будет.

Добавлено через 54 секунды
Цитата(andrew_121 @  2.10.2009,  03:45 Найти цитируемый пост)
пока программа работает

Цитата(andrew_121 @  2.10.2009,  03:45 Найти цитируемый пост)
При завершении программы ОС сама подчистит память




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 5.10.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Remiznik, да, ты прав.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.