Size: a a a

2021 June 09

M

Mr.Mait in Qt
Когда я раньше тупил, у меня как-то не было проблем с ошибками при ручном удалении объектов
источник

RY

Roman Yastrebckov in Qt
О, спасибо
Пробовал найти наследника и закрыть его...
источник

FS

Flower Surgeon in Qt
Потому, что это особенность Qt. Если укажешь родителя, то при удалении родителя грохнется и ребёнок. Ну а ты получишь double-free со всеми вытекающими последствиями при попытке удалить ребёнка вручную.
источник

AU

Abu Umar in Qt
для Qt классов противопоказано использовать delete в 99% случаев. deleteLater либо пускай родитель удаляет
источник

M

Mr.Mait in Qt
Можешь пояснить тогда, вот сейчас по приколу создал 6 кнопок, назначил родителя, засунул в лайоут(он же тоже переназначает родителя). В деструкторе вручную удалил эти 6 кнопок, приложение не упало. Почему?
источник

FS

Flower Surgeon in Qt
А теперь пересобери с -fsanitize-address и понаблюдай.
источник

FS

Flower Surgeon in Qt
Поясняю: double-free — это UB. Как это UB будет ловить стандартная библиотека — проблемы стандартной библиотеки.
источник

FS

Flower Surgeon in Qt
Может никак не отреагировать, может вызвать abort()
источник

VK

Valentin Kornienko in Qt
В студии отладочный Хип сообщит о двойном удалении
источник

VK

Valentin Kornienko in Qt
Если не ошибаюсь
источник

FS

Flower Surgeon in Qt
Ну вот, наглядный пример.
источник

VK

Valentin Kornienko in Qt
Ну, или ASAN поймает такое сразу
источник

M

Mr.Mait in Qt
Понял, был не прав. Странно что валгринд не сообщал
источник

FS

Flower Surgeon in Qt
А ты как валгринд запускал? Валгринд — это же швейцарский нож.
источник

M

Mr.Mait in Qt
Через creator на линуксе, читал давно что отслеживает двойное освобождение. Могу и с консоли, но ненадобно было
источник

FS

Flower Surgeon in Qt
Далеко не факт, что он был запущен правильно.
источник

FS

Flower Surgeon in Qt
Алсо, есть ещё переменная окружения MALLOC_CHECK_
источник

СС

Сергей Семёнкин... in Qt
Если ты все про тот же код, то ты снова на те грабли наступаешь и удаляешь неинициализированные данные
источник

СС

Сергей Семёнкин... in Qt
Инициализизуй что в хидере описала и попробуй вызвать delete в деструкторе
источник

NM

Nastya Medveda in Qt
так и делаю. Все равно крашится при закрытии
источник