Ошибка при закрытии программы., Где-то порчу память. |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка при закрытии программы., Где-то порчу память. |
silver47 |
10.9.2011, 21:48
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Доброго времени суток. При закрытии программы, случается, что появляется сообщение о том, что программа выполнила недопустимую операцию и тд по списку. Научите, пожалуйста, как её отловить.
Qt 4.7.4 + QtCreator 2.3.0 Window 7 |
|
|
RazrFalcon |
10.9.2011, 22:22
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Копипаст текста ошибки в студию.
|
|
|
silver47 |
10.9.2011, 22:35
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Скрин ошибки в файле 2.png
Файл 1.png содержит скрин дебагера сразу после вылета. Красным подчернул два моих метода. Да приложение многопоточное, но потоки к тому моменту, как происходит вылет, уже отработали, завершились и были удалены (через сигнал fihished и слот deleteLater). Понимаю, что наверняка, пытаюсь уничтожить то, что уничтожено ранее, но не знаю как это найти. |
|
|
RazrFalcon |
11.9.2011, 0:01
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Я хз, но может
|
|
|
Алексей1153 |
11.9.2011, 0:06
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
exception code 0xc0000005 - это попытка залезть в чужую память. Это либо выход за край динамического массива, либо попытка доступа к возвращённому в кучу блоку памяти
судя по всему, объект, на который указывает (-вал) указатель d - капут ещё вариант (для дебага актуально ) - неинициализированный указатель. он там у тебя не нулевой, а что-нибудь вроде 0xcccccccc |
|
|
silver47 |
11.9.2011, 5:23
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Это 100% попытка доступа к памяти, возвращенной в кучу. Но указатель d, это не моё, это QMutex. Моё подчеркнуто красным, там всего 2 файла.
|
|
|
silver47 |
11.9.2011, 8:19
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Эмм... кажется вопрос закрыт. Не совсем понимаю причем тут это.
В общем, создавался отдельный поток и запускался на выполнение не с помощью thread->start(); а напрямую: thread->run();. Заменил второе на первое и все как рукой сняло. Уже полчаса как не могу повторить вылет. P.S. посоветуйте литературу про потоки на Qt. Сообщение отредактировал silver47 - 11.9.2011, 8:38 |
|
|
Litkevich Yuriy |
11.9.2011, 8:47
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а программа не консольная?
|
|
|
silver47 |
11.9.2011, 8:52
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Была когда-то консольной. С ней как раз проблем не было, после того как прикрутил ГУИ c треем, вот все и началось.
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 8:37 |