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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Segfault windows console application in atexit callback on CTRL+C, debug build.  (Прочитано 2583 раз)
asvil
Гость
« : Апрель 18, 2011, 17:24 »

Дамы и господа, как никогда требуется Ваша помощь. Скопируйте текст ниже к себе в редактор. Скомпилируйте в debug режиме. Запустите, нажмите CTRL+C и расскажите о своих впечатлениях.

Код:
#include <QtCore>

void myExit()
{
    QObject obj;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    atexit(myExit);
    return a.exec();
}


А теперь вопрос, почему оно падает?
Записан
k06a
Гость
« Ответ #1 : Апрель 27, 2011, 03:04 »

Потому что exec() передаёт управление операционной системе.
А сам ждёт от ОС событий и их обрабатывает в "цикле обработки событий".
Таким образом, в момент нажатия Ctrl+C .... творится .... не проверял что ...
Посмотрите такую штуку:
Код:
QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )
и сигнал:
Код:
void QCoreApplication::aboutToQuit ()
Записан
asvil
Гость
« Ответ #2 : Апрель 27, 2011, 08:35 »

Спасибо, но немного не то. Падает приложение в конструкторе QObject на строке 5. Именно для debug режима. Именно в windows.
Сигнал не подходит, нужен callback.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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