Название: Удаление объектов Qt 4.0.1 Отправлено: Druxa от Октябрь 16, 2005, 14:47 В моей программе есть класс, который качает файлы через http. Создаётся объект:
Код:
Так вот! Когда я создаю объект loadFiles = new downloadFiles(mainHost, "", "users.txt");, а затем если удаляю его при возникновении сигнаола httpDownloadError() приложение зависает. Если удалять объект при httpDownloadOk(), т.е. когда файл успешно скачался, ни каких проблем не возникает. Сначало я подумал, что если генерируется сигнал ошибки, то в классе Qhttp предусмотрено удаление объекта по умолчанию, но если я вручную не удаляю объект при возникновении ошибки скачивания оперативная память пропадает, если пытаться повторять процедуру при отсутствии соединения с интернетом(т.е. генерируется httpDownloadError()), то память пропадает всё больше и больше! Что длать? как правильно сконструировать деструктор? Название: Удаление объектов Qt 4.0.1 Отправлено: oktogen от Октябрь 18, 2005, 10:16 Мне кажется, до срабатывания деструктора, нужно разорвать
connect(http, SIGNAL(done(bool)), this, SLOT(httpDone(bool))); Название: Удаление объектов Qt 4.0.1 Отправлено: Druxa от Октябрь 18, 2005, 16:18 Цитата: "oktogen" Мне кажется, до срабатывания деструктора, нужно разорвать connect(http, SIGNAL(done(bool)), this, SLOT(httpDone(bool))); Почему тогда при done(bool), где bool=true деструктор уничтожает объект и не происходит никаких ошибок, память отчищается? Название: Удаление объектов Qt 4.0.1 Отправлено: oktogen от Октябрь 19, 2005, 12:39 Трудно понять так сразу.
Мне кажется общий вид проблемы таков. Ты удаляешь объект, после этого проходит этот сигнал и срабатывает слот, который обращается к функциям и переменным уже удаленного объекта. Естественно, результат будет непредсказуемым. Название: Удаление объектов Qt 4.0.1 Отправлено: oktogen от Октябрь 19, 2005, 12:42 Посмотри, слот, который связан с сигналом HttpDownloadError().
Возможно там проблема Название: Удаление объектов Qt 4.0.1 Отправлено: Druxa от Октябрь 20, 2005, 00:52 Цитата: "oktogen" Посмотри, слот, который связан с сигналом HttpDownloadError(). Возможно там проблема Я удаляю объект в слоте SLOT(connectError()), слот срабатывает при возникновении сигнала HttpDownloadError() моего объекта, так что всё должно корректно удаляться. Код:
В случае httpDownloadOk() объект удаляется без ошибок. Название: Удаление объектов Qt 4.0.1 Отправлено: oktogen от Октябрь 20, 2005, 10:16 Приведи текст слота connectError(). Желательно весь.
|