Re: Про QObject::deleteLater()
От: Qt-Coder  
Дата: 09.10.25 04:20
Оценка: 6 (2) +1
Здравствуйте, m2user, Вы писали:

delete — это стандартный оператор C++. Его можно безопасно использовать, только если вы абсолютно уверены, что объект в данный момент не используется и не находится в середине обработки события.

deleteLater() — это метод QObject, который помечает объект для удаления. Удаление произойдет, когда управление вернется в цикл событий (event loop). Это безопаснее, потому что к моменту удаления все текущие события для этого объекта будут обработаны.

Если объект "живет" в потоке A, а вы находитесь в потоке B, вы не можете удалить его с помощью delete. Это почти гарантированно приведет к крешу, потому что поток A может в этот момент обрабатывать событие для этого объекта.

deleteLater() поставит задачу на удаление в цикл событий того потока, в котором "живет" объект, что является потокобезопасным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.