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

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

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Причины утечки памяти и способы борьбы с ними  (Прочитано 26189 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #45 : Февраль 16, 2014, 17:33 »

Но у меня одно число указателей, а у каждого "умника" свое число ссылок, нехорошо, не по уму иметь 2 копии данных.
Здесь не понял: "одно число указателей", "свое число ссылок". Давайте от объектов исходить.

Послать-то без проблем, но никто не обещал что в очереди не появится событие которое опять вызовет захват того же ресурса.
Ну так как его можно освобождать, если его кто-то постоянно хочет? Вначале нужно эту "хотелку" вразумить.

Это интересно обсудить, может создадим тему?
Такие темы на форуме поднимались, причем именно в контексте умных указателей: http://www.prog.org.ru/topic_16093_0.html
Если интересно, давайте обсудим.
Записан
8Observer8
Гость
« Ответ #46 : Май 25, 2014, 21:04 »

У моего приложения в меню есть пункт "Settings". При нажатии на него появляется диалоговое окно. Будет ли это утечка памяти? Я где-то слышал, что объекты унаследованные от Object не надо уничтожать с помощью delete, так ли это? Где об этом написано?

Код
C++ (Qt)
void MainWindow::on_actionSettings_triggered()
{
   Settings *dialog = new Settings;
   dialog->setModal( true );
   dialog->show( );
}
 

Заранее спасибо за помощь.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #47 : Май 25, 2014, 21:38 »

У моего приложения в меню есть пункт "Settings". При нажатии на него появляется диалоговое окно. Будет ли это утечка памяти? Я где-то слышал, что объекты унаследованные от Object не надо уничтожать с помощью delete, так ли это? Где об этом написано?

Код
C++ (Qt)
void MainWindow::on_actionSettings_triggered()
{
   Settings *dialog = new Settings;
   dialog->setModal( true );
   dialog->show( );
}
 

Заранее спасибо за помощь.


Тут будет хорошо течь память Улыбающийся
Для диалогов можно не выделять память в куче, и использовать exec Улыбающийся

Код
C++ (Qt)
void MainWindow::on_actionSettings_triggered()
{
   MyDialog dialog;
   dialog.setWindowTitle( tr( "Settings" ) );
   if ( dialog.exec() == QDialog::Accepted )
      qDebug() << "Диалог завершился хорошо!";
}
 

http://qt-project.org/doc/qt-4.8/qdialog.html в разделе Code Examples хорошо показано как лучше всего использовать диалоги Улыбающийся
« Последнее редактирование: Май 25, 2014, 22:29 от gil9red » Записан

8Observer8
Гость
« Ответ #48 : Май 25, 2014, 22:19 »

То что надо! Спасибо! Улыбающийся
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


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