crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Qt и Паттерн синглотон
maxvanceffer
  опции профиля:
сообщение 27.3.2011, 11:16
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вот вопрос такой , у меня есть к примеру синглтон унаследованный от QObject и к примеру в конструкторе у него есть такая строчка

QSettings *settings = new QSettings(...,...,this);

Правильно ли вообще такое делать ?
И при удаление синглтона будет ли освобожден обект settings ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 27.3.2011, 15:45
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2886
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


maxvanceffer, если выделяешь память в конструкторе, то удаляй в деструкторе. Хотя, для синглтона не так критично - утечка памяти будет незаметна, так как при завершении программы эта утечка сразу подчистится системой. Но для порядка нужно удалять ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.3.2011, 18:24
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9655
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(maxvanceffer @ 27.3.2011, 14:16) *
Правильно ли вообще такое делать ?
И при удаление синглтона будет ли освобожден обект settings ?
да, удалится он автоматически, т.к. QSettings наследник QObject и родитель указан.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maxvanceffer
  опции профиля:
сообщение 30.3.2011, 10:06
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хорошо а вот такой вот вопрос
QMap <QString,QLabel*> map;

map.clear();

Что будет с QLabel* если у них нет родителей. Они так и останутся висеть в памяти ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
arial
  опции профиля:
сообщение 30.3.2011, 13:56
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 39
Регистрация: 27.9.2009
Пользователь №: 1121

Спасибо сказали: 9 раз(а)




Репутация:   0  


Цитата(maxvanceffer @ 30.3.2011, 11:06) *
Хорошо а вот такой вот вопрос
QMap <QString,QLabel*> map;

map.clear();

Что будет с QLabel* если у них нет родителей. Они так и останутся висеть в памяти ?

Останутся. Чтобы не остались используй в деструкторе qDeleteAll(map.values())
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.9.2019, 8:04