Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ Qt и Паттерн синглотон

Автор: maxvanceffer 27.3.2011, 11:16

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

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

Правильно ли вообще такое делать ?
И при удаление синглтона будет ли освобожден обект settings ?

Автор: Алексей1153 27.3.2011, 15:45

maxvanceffer, если выделяешь память в конструкторе, то удаляй в деструкторе. Хотя, для синглтона не так критично - утечка памяти будет незаметна, так как при завершении программы эта утечка сразу подчистится системой. Но для порядка нужно удалять ))

Автор: Litkevich Yuriy 27.3.2011, 18:24

Цитата(maxvanceffer @ 27.3.2011, 14:16) *
Правильно ли вообще такое делать ?
И при удаление синглтона будет ли освобожден обект settings ?
да, удалится он автоматически, т.к. QSettings наследник QObject и родитель указан.

Автор: maxvanceffer 30.3.2011, 10:06

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

map.clear();

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

Автор: arial 30.3.2011, 13:56

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

map.clear();

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

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

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)