QObject::deleteLater, когда проиходит освобождение памяти? |
Здравствуйте, гость ( Вход | Регистрация )
QObject::deleteLater, когда проиходит освобождение памяти? |
йцукен |
28.12.2007, 15:38
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 28.12.2007 Пользователь №: 57 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я так и не понял, когда происходит освобождегние памяти в вызове QObject::deleteLater?
Это эдентично такому коду или нет? QObject *pObj; // ... delete pObj; pObj = 0; |
|
|
ViGOur |
28.12.2007, 15:45
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как я понял память освобождается после того, как были обработаны все события.
И если выполнить тот код, который вы привели ниже, может произойти ошибка, из-за того, что некоторые слоты не успели отработать, а обьект уже удален. Если перевести описание данной функции, то вот, что получиться: Цитата void QObject::deleteLater () [slot]
Отмечает объект для удаления. Объект будет удален когда контроль вернется к циклу обработки сообщений. Обратите внимание, что вход и выход из нового цикла обработки событий (например при открытии модального диалога) не выполнят отсроченное удаление; для того чтобы объект был удален, управление должно вернуться в тот цикл обработки событий, в котором была вызвана deleteLater(). См. также destroyed() и QPointer. Сообщение отредактировал ViGOur - 28.12.2007, 15:48 |
|
|
bobdva |
2.1.2009, 19:57
Сообщение
#3
|
Студент Группа: Участник Сообщений: 29 Регистрация: 2.10.2008 Из: Москва Пользователь №: 377 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 17:04 |