Цитата(wiz29 @ 18.4.2012, 11:30)
Можешь привести код функции main твоего приложения?
и заодно код виджета.
А также попробуй пересобрать (может поможет)
Код сначала не стал приводить, но сейчас проблема частично локализовалась
Происходит следующее:
1. метод Start() вызывает метод StartRecorder()
2. метод StartRecorder() пытается создать объект типа Recorder
3. объект при создании кидает исключение типа RecorderError
4. в обработчике исключения почему-то не вызывается деструктор окна
5. точка выполнения возвращается в функцию Start(), где на второй строке программа успешно сегфолтится
void MainForm::Start()
{
StartRecorder();
// Здесь, в итоге, пытаемся обратиться по непроинициализированному указателю
RecordInfo info = recorder->GetRecordInfo();
}
void MainForm::StartRecorder()
{
try {
recorder = new Recorder;
recorder->Start();
}
catch (RecorderError &err) {
QMessageBox::critical(this, tr("Ошибка"), err.GetErrorDescription());
// Здесь, теоретически, должен вызываться деструктор, но этого не происходит
close();
}
}
Пересобирать, конечно, пробовал, и в дебаге и в релизе, но безуспешно.
P.S. Код функции main() стандартный:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainForm w;
w.show();
return a.exec();
}