![]() |
|
|
![]()
|
|
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Ладно.. В любом случае глупо гадать
Это уже философский вопрос.. Но, если свято следовать принципам RAII, то такой ситуации ("забудешь удалить") просто не может быть. |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Ну да, для этих целей есть QSharedPointer. |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
Поделюсь своими соображениями ну от специалистов жду ответа такое возможно )
Для начла наверно всетаки придется поподробнее рассказать о том что хочу делать ! Есть главная программа и нужно открыть файл но не один их несколько в одном данный в другом описание ! Файл с даными очень большой .... и потому перед загрузкой файла выскакивает форма в которой указано диапазон файла (временной) к примеру от 0 до 20 сек это примерно файл весом 50 и больше метров ! так и все эти загрузки происходят в одной функции и вот я подумал если даных слишком много то стек может переполниться и упасть всё приложение ... но я не уверен это догадка ! Вопрос только почему падение происходит на функции exec() тоесть при отображение формы и блокировки !
это далеко не полный перечень всего что делается в одной функции так как после загрузки файла сразу нужно вывести дополнительные окна для работы . так что функции получилась очень большая и еше она загружает много даных в оперативку из файла !! так может она падать из-за того что очень большая ? |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Жесть какая. Чем qPrintable() не угодил? Да и вообще, если надо писать в stderr используй это:
Если просто в консоль то qDebug() или QTextStream(stdout). Хотя конечно никто не запрещает использовать стандартную библиотеку. А это я вообще не понял. P.S.: кстати, что сказал отладчик? |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
это всё не суть важно меня подения волнуют больше !
с отладчиком не разабрался почемуто при входе в QFileDialog::getOpenFileName(this,"Open...", ".formular"); приложение виснит и а отладчик не даёт дальше крутить шаги ( |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Тогда предлагаю забыть о коде и сосредоточиться на отладке. Просто документацию не читал, причина то понятна. "крутить"? Куда? Какой отладчик используешь? Где backtrace, call stack? |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
gdb 6 запускаю приложение просто под отладчиком всё нармально работает но при вызове QFileDialog::getOpenFileName виснит приложение и нечего не происходит не появляеться окно диалога !!
да с документацией только сегодня начал знакомиться так что пока разбираюсь что кчему ) |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
покопался отладчиком вот что выдаёт стек вызывов !
у кого есть какие соображение ? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
догадка : невалидный this у кнопки покажите содержание MainWindow::paintEvent, конструктора этого класса, функцию в которой создаются контролы (если не в конструкторе) и список дата_членов. Это сообщение отредактировал(а) mes - 17.6.2009, 11:38 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Другая догадка - проблема в Qt с отрисовкой. Уже третий раз сталкиваюсь, похожий стек вызовов тут у человека и связан тоже с чекингом: http://www.forum.crossplatform.ru/index.php?showtopic=2931
|
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
Да не - тут же на своём обработчики пэинта падает: Там похоже проверка чека какой-т кнопки по невалидному указателю на эту кнопку. |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
вот вы столько понаписали но я както не догоняю каким оброзом exec() связан с каким-то QAbstractButton::isChecked () но это ешо както понять можно на форме кнопки есть !
но вот эта страка для меня вобше загадка #1 0x0805177b in MainWindow::paintEvent (this=0xbffff430, e=0xbfffd570) at src/mainwindow.cpp:406 каким оброзом exec() связон с прорисовкой главного окна моего приложения ! И до этого проблем с функцией отрисовки небыло так что мне нечего не понятно ! |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
К тебе пришёл мессадж на перерисовку (MainWindow) - вызвалось событие перерисовки. Вполне нормально. Вопрос в том, почему оно свалилось
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 7 Всего: 250 |
Интересно, а что по Вашему делает метод exec() ? |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
давайте по порядку ))
во первых ! это какойто страный вызов MainWindow::paintEvent (this=0xbffff430, e=0xbfffd570) at src/mainwindow.cpp:406 так как в начале кажой функции у менять есть консольное сообшение о том что даная ыункция вызываеться и при подение на консоли нечего нет тоесть вызываеться какаято левая функция или както страно ! во вторых я смотрел стек при нармальной работе это всего не вызываеться даный стек который я привёл создаёться только при падении в третьих учитывая предыдцшее что я не могу отследить в каком месте имено падение так как я явно при нармально работе не вижу какая функция вызываеться как такое вобше может происходить ! mes, я думаю что метод exec() прорисовывает по верх всех окон окна которое его вызвало и блокирует работу всего остального приложения . Как это происходит я незнаю и как уже сказал в пунке 2 отследить что вызываеться какието стороние функции можно только при падении. И есле уж и вызываеться прорисовка главного окна то только после того как происходит событие закрытие диалогового окна вызвавшего exec() но ни как до этого .... ведь в этом нет смысла ! ну я так думаю ! обьясните если я не прав очень хочеться разобраться ! П.С ешо раз напоню что приложение падает не каждый раз при вызове exec() . Оно может упасть и с 1-го вызова так и 10-го. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |