QTreeWidget повреждения кучи, внезапная остановка приложения |
Здравствуйте, гость ( Вход | Регистрация )
QTreeWidget повреждения кучи, внезапная остановка приложения |
Phoenix_nsk |
12.3.2011, 18:31
Сообщение
#1
|
Студент Группа: Участник Сообщений: 57 Регистрация: 12.3.2011 Пользователь №: 2491 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть объект типа иерархическое дерево (QTreeWidget).
При нажимании буквенных клавиш должен осуществляться переход на совпадающую ветку (по умолчанию). Этот момент мною никак не изменялся, поэтому очень сильно удивляет следующее: "ОС Windows имициировала точку останова в conf_dev.exe. Это может быть вызвано повреждением кучи и указывает на ошибку в conf_dev.exe или в одной из загруженных им DLL. Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит conf_dev.exe" Это происходит в debug на win7, release же вообще падает. Что ещё боле странно - на winXP всё работает нормально, т.е. переходит к нужному элементу. Клавиши стрелочки работают, исключение происходит только на буквенных. Debug после остановки открывает qregion.cpp и указывает на последнюю строчку в функции: Раскрывающийся текст
Qt 4.7.1 ------------------------------------------------------------------------------------------------------ Решил провести тест и написал простой код: Раскрывающийся текст
Скомпилированное под Qt Creator (4.7.0) работает как надо, т.е. при нажатии кнопок переходит на элемент Если его же скомпилировать из под вижака (2008), где Qt 4.7.1 - падает. Что это вообще такое, с чем связано? И безусловно самое важное - как обойти? |
|
|
Phoenix_nsk |
12.3.2011, 19:34
Сообщение
#2
|
Студент Группа: Участник Сообщений: 57 Регистрация: 12.3.2011 Пользователь №: 2491 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть у кого-нить предположения по этому поводу?
|
|
|
Rocky |
12.3.2011, 22:58
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Если его же скомпилировать из под вижака (2008), где Qt 4.7.1 - падает. При пошаговом выполнении на какой строчке валится? Может бага какая в кьюте => есть попробовать Qt Creator + 4.7.1 + win Seven? Или vs + 4.7.2 + win Seven? (4.7.2 это bugfix по сути). А если попробовать так
? Сообщение отредактировал Rocky - 12.3.2011, 22:59 |
|
|
Phoenix_nsk |
13.3.2011, 8:47
Сообщение
#4
|
Студент Группа: Участник Сообщений: 57 Регистрация: 12.3.2011 Пользователь №: 2491 Спасибо сказали: 0 раз(а) Репутация: 0 |
Это происходит при одном и том же действии - нажатии клавиши, но в Qt файлах я оказываюсь порой в разных, но итог один и тот же:
ВСЁ ПРИХОДИТ ВОТ СЮДА (dbgheap.c) при debug сборке _ASSERTE(_CrtIsValidHeapPointer(pUserData)); У QTreeWidget есть ещё метод, видимо он и вызывается при нажатии клавиши вызов keyboardSearch("str"); тоже приводит к таким последствиям. -------------------------------------------------------------------- Может быть у кого-нить есть возможность скомпилить мой примерчик и посмотреть у себя что произойдёт? |
|
|
Phoenix_nsk |
14.3.2011, 16:39
Сообщение
#5
|
Студент Группа: Участник Сообщений: 57 Регистрация: 12.3.2011 Пользователь №: 2491 Спасибо сказали: 0 раз(а) Репутация: 0 |
Мда, что-то на специализированом ресурсе не много желающих поразбираться в проблеме...
Собственно до чего я докопал... Проблема в сборке Qt, я его пересобираю по вот этой инструкции: Сборка Qt без зависимостей (MS Visual Studio) И на выходе получаю вроде бы как работающую сборку, но оказалось что нет. Плюсы сборки: можно собирать приложение (релиз) с ключом MT, тогда не нужно таскать с собой никаких dll, кроме Qt'шных, а так по умолчанию стоит MD и есть системы, в которых почему-то приложение не запускается, система пишет, что оно неверно сконфигурировано и поможет только переустановка. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 2:17 |