![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
antake |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 19.7.2013 Пользователь №: 3883 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день!
Есть контейнер qset<qulonglong>. Когда выполняю команду clear();, получаю сигнал SIGABRT и программа вылетает. Неполадки в библиотеках qt, как будто освобождается незанятая память. При этом, когда выполняю следующий код:
,то в множестве появляется хеш со значением 32 ( таких маленьких чисел там не может быть ), contains дает на нем false. И именно после 32 и происоходит вылет. Посоветуете что-нибудь? |
|
|
![]() |
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ничего не вылетает, я даже специально попробовал на всякий случай ) Собственно, в показанном куске кода вылетать принципиально нечему - проблема где-то в твоём не показанном коде. Где-то портишь память контейнера
и ещё Цитата Qt automatically takes a copy of the container when it enters a foreach loop. If you modify the container as you are iterating, that won't affect the loop. (If you do not modify the container, the copy still takes place, but thanks to implicit sharing copying a container is very fast.) в момент копирования уже косячного контейнера и происходит ещё какая-то дополнительная бяка |
|
|
antake |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 19.7.2013 Пользователь №: 3883 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Очевидно, что ничего не вылетать не будет, если попробовать это в таком виде)
И портится памяти тоже принципиально негде. Одна из моих версий была, что есть в qt какая-то тонкость или баг, которые проявляется один раз на миллион. Я теперь делаю clear в другом месте, пока работает. Не знаю, что случилось. |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2944 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
antake, сомневаюсь, что это баг Qt . Лучше сразу разобраться, а то потом фокусы начнутся, совсем непонятно будет, что падает и где
>>И портится памяти тоже принципиально негде. затереть память контейнера можно запросто |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.7.2025, 16:59 |