ошибка при завершении программы использующей таймер |
Здравствуйте, гость ( Вход | Регистрация )
ошибка при завершении программы использующей таймер |
Litkevich Yuriy |
30.4.2010, 13:14
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Никак не могу понять, как же правильно работать со встроенным в QObject таймером.
В данный момент работа, схематично, выглядит так: есть несколько объектов разных классов, которые создаются по цепочке, один в другом. В каждом может быть таймер и он используется по одной и той же схеме.При завершении программы виндовоз показывает сообщение об ошибке ("Память не может быть read") Такая ситуация наблюдается у всех моих программ, которые используют таймер встроенный в QObject. И в разных версиях Qt, начиная с Qt 4.3.5 |
|
|
igor_bogomolov |
30.4.2010, 15:24
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Скорее всего не в таймере дело. Я таким же образом использую таймер QObject'a, и никаких проблем не наблюдаю, ни под Linux ни под Windows. Проверял на всех версиях начиная с 4.5.0
|
|
|
Litkevich Yuriy |
30.4.2010, 22:41
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
факт, проблема была не в таймере.
был такой код: Говоря языком связистским, мне нужно было "поставить шлейф". Т.е. вместо штатного класса использовать заглушку, чтобы проверить часть программы без всяких коммуникаций с внешним миром.Я решил, что удобнее будет иметь переключалку в pro-файле. Создал каталог imitators и положил в него модифицированные файлы spcontroller.{h|cpp}, а в pro-файле сделал так: весь проект очистил, и собрал. Красота всё работает.Пока тестил, поменял немного интерфейс в spcontroller.h Всё опять очень хорошо, вот только при завершении работы стала возникать авария. Авария прекращалась когда я комментировал всю работу с таймерами. Это меня отвлекло. Пришлось собирать проект по шагам, добавляя файл за файлом и проверяя как работает.Сначала я убедился, что таймеры действительно не причём. Ну а когда дошла очередь до spcontroller (Собирал сразу версию с заглушкой, без штатных файлов. ) тут-то я и увидел проблему. Т.к. компиллер на отрез отказался компилировать проект. Причина: #include "spcontroller.h" - говорит компиллеру искать файл в каталоге данного файла. тогда я сделал так: #include <spcontroller.h> - говорит компиллеру искать файл в каталоге указанном с помощью ключа -I. Но и так компилироваться не будет, т.к. каталог imitators не находится в списке включаемых. И того нужно было ещё в pro-файл вписать:
Разумеется если я добавлю штатные файлы в каталог с основными исходниками, опять начнутся проблемы. Т.к. каталог с основными исходниками уже есть в списке включаемых файлов. Принципиально проблемы-то начались именно из-за того, что я поменял интерфейс. Но очень "удачно" П.С. Вот такая вот у меня история сегодня случилась. П.ПС. 2:41 НСК, можно теперь и спать с чистой совестью. |
|
|
igor_bogomolov |
30.4.2010, 23:17
Сообщение
#4
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
[offtop]
Цитата 2:41 НСК, можно теперь и спать с чистой совестью. Три часа разница у нас с тобой. А ведь я тебя вижу порой и в 2 ночи, а у тебя это уже 5 утра. Такое впечатление что ты вообще не отдыхаешь[/offtop] |
|
|
Litkevich Yuriy |
1.5.2010, 11:58
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 26.12.2024, 18:34 |