crossplatform.ru

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

> Гарантия на деструктор.
call_me_Frank
  опции профиля:
сообщение 21.11.2013, 17:26
Сообщение #1


Студент
*

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

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




Репутация:   0  


Господа, есть вопрос. Насколько можно быть уверенным в том, что при закрытии приложения (не аварийном) будут выполнены все команды в деструкторе объекта?

Пример:
int main(int argc, char *argv[]){
    //

    QApplication a(argc, argv);
    //QApplication::setQuitOnLastWindowClosed(false);

    // GUI
    MainWindow w;
    w.show();

    Mainy *my = new Mainy(&a);

    return a.exec();
}


Mainy - класс-наследник от QObject, его деструктор:
Mainy::~Mainy(){
    //

    qDebug() << "~Mainy() ";
}


сообщение выводится в 50% случаев закрытия.

я не знаю, как работает дебаг, но у меня из-за этого серьезные опасения насчет того, что половина инструкций внутри деструктора может просто не выполниться...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Iron Bug
  опции профиля:
сообщение 22.11.2013, 8:28
Сообщение #2


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

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


Цитата(call_me_Frank @ 22.11.2013, 10:26) *
В данном примере я рассчитываю на то, что об этом позаботится родитель моего объекта (&a).

динамическое выделение памяти НЕ вызывает деструкторы в нормальном случае. нужен явный вызов delete. если его не было, система будет удалять объект при очистке памяти приложения. естественно, на тот момент самой программы уже не будет.

если нет понятного места, где нужно удаление объекта, используются автоматические указатели.

Сообщение отредактировал Iron Bug - 22.11.2013, 8:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 28.11.2024, 21:45