код ошибки -1073741819 |
Здравствуйте, гость ( Вход | Регистрация )
код ошибки -1073741819 |
demaker |
1.2.2013, 15:59
Сообщение
#1
|
Студент Группа: Участник Сообщений: 73 Регистрация: 29.1.2013 Пользователь №: 3691 Спасибо сказали: 0 раз(а) Репутация: 0 |
Никак не могу отловить ошибку.
Вроде все что создавал на куче удаляю за собой. И все равно выдает. завершился с кодом -1073741819 Использую библиотеку QWT когда в дебаге отлавливаю то программа вылетает здесь:
а начинается на этом участке:
Может кто-то сталкивался??? |
|
|
Iron Bug |
1.2.2013, 21:10
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
не выводи код ошибки в десятичном виде. перевод в шестнадцатиричный даёт нормальный читабельный код ошибки и по нему сразу всё понятно.
0xC0000005 - это ошибка обращения к памяти. классика жанра. где-то кто-то обращается к удалённому объекту. или вылетает за границу массива. надо весь код смотреть, по куску не понять, что там удаляется зря. |
|
|
RazrFalcon |
2.2.2013, 1:58
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
PS: так выводит сам Qt Creator, по этому - увы
|
|
|
Iron Bug |
2.2.2013, 17:25
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
Litkevich Yuriy |
3.2.2013, 16:20
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
void Widget::sl_deletePlot(QTreeWidgetItem*item,int column) Можно получить комментарий, к каждой строчке? Я не понимаю того, что здесь делается.{ qDebug()<<"sl_deletePlot"; qDebug()<<"plot = "<<((TreeWidgetItem*)item)->p; ((TreeWidgetItem*)item)->p->deleteLater(); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! listPlot.removeOne(((TreeWidgetItem*)item)->p); } Особенно интересует разбор этого: ((TreeWidgetItem*)item)->p |
|
|
lanz |
4.2.2013, 8:45
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Ноосфера подсказывает мне что дело в двойном удалении item->p.
Сначала removeOne удаляет элемент, затем управление возвращается в event loop и выполняется удаление по deleteLater. Можно попробовать убрать deleteLater. Еще возможно, если item был создан с parent то parent его удалит (это будет уже третье удаление). Для диагностики можно добавить печаталку в деструктор. |
|
|
demaker |
4.2.2013, 11:54
Сообщение
#7
|
Студент Группа: Участник Сообщений: 73 Регистрация: 29.1.2013 Пользователь №: 3691 Спасибо сказали: 0 раз(а) Репутация: 0 |
и СООТВЕТСТВЕННО
по коннектету вызывается слот для удаления плота |
|
|
Алексей1153 |
4.2.2013, 12:01
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
необходимость явного приведения - уже признак кривизны кода
((TreeWidgetItem*)item)->p скажи, зачем это делаешь ? |
|
|
demaker |
4.2.2013, 12:06
Сообщение
#9
|
Студент Группа: Участник Сообщений: 73 Регистрация: 29.1.2013 Пользователь №: 3691 Спасибо сказали: 0 раз(а) Репутация: 0 |
необходимость явного приведения - уже признак кривизны кода ((TreeWidgetItem*)item)->p скажи, зачем это делаешь ? Чтобы знать какому item принадлежит какой plot ((TreeWidgetItem*)item)->p Потому что сигнал itemDoubleClicked(QTreeWidgetItem*,int) !!!QTreeWidgetItem а у меня TreeWidgetItem |
|
|
Алексей1153 |
4.2.2013, 12:09
Сообщение
#10
|
фрилансер Группа: Участник Сообщений: 2939 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
demaker,
указатель item должен уметь рассказывать это без явного приведения. Либо через виртуальную функцию, либо через dynamic_cast, либо через стороннюю ассоциативную таблицу Чтобы долго всем мозги догадками не компостировать, прицепи проект )) Сообщение отредактировал Алексей1153 - 4.2.2013, 12:18 |
|
|
Текстовая версия | Сейчас: 27.4.2024, 10:11 |