Russian Qt Forum
Ноябрь 24, 2024, 00:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QThread утечка памяти - остановить поток и освободить память.  (Прочитано 5842 раз)
max1983
Гость
« : Ноябрь 09, 2009, 17:19 »

Создаю в цикле регулярно несколько потоков для работы с сетью

Код:
 CWorkerDemon * Dem = new CWorkerDemon();//Demon worker
        Dem->start();//Start Thread
        connect(Dem, SIGNAL(addNewMessage(const QString&,const QString&,const QString&,const QString&)),this,     SLOT(incomingMessage(const QString&,const QString&,const QString&,const QString&)));
        connect(this, SIGNAL(StartWork(bool)),Dem, SLOT(FreeTire(bool)));
        emit StartWork(UseProxy);
        disconnect(Dem, SIGNAL(FreeTire(bool)),this, SLOT(StartWork(bool)));


далее в функции FreeTire идет коннект с веб страничкой
полученный контент отправляю назад в форму incomingMessage
и делаю выход
this->exit(0);
я так полагаю что это заставит поток остановится
но ресурсы занятыем им не освобождаются
так как память занятая программой увеличивается.
Что сделать?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Ноябрь 09, 2009, 19:06 »

см. void QObject::deleteLater ()   [slot]
Записан

ArchLinux x86_64 / Win10 64 bit
spectre71
Гость
« Ответ #2 : Ноябрь 09, 2009, 19:15 »

Код
C++ (Qt)
MyThread::MyThread(bool FreeOnComplete, QObject* parent) : QThread(parent) {
// ...
// ...
 if(FreeOnComplete) {connect(this , SIGNAL(finished()), this , SLOT(deleteLater()));}
}
Записан
max1983
Гость
« Ответ #3 : Ноябрь 09, 2009, 20:55 »

Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 Непонимающий
 Плачущий
нехорошо пугать юзверей
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Ноябрь 09, 2009, 21:20 »

нехорошо пугать юзверей
Что это за пользователь такой слабонервный? У меня по 9-10Gb занимают за 1 минуту - и отлично себя чувствуют Улыбающийся
Ну а по существу - может быть все что угодно, запрягайте tools, сообщайте детали - а то проблема слишком общая.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Ноябрь 09, 2009, 21:49 »

Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 Непонимающий
 Плачущий
нехорошо пугать юзверей

память течёт где-то, ищи. То что падает при сворачивании - нормально.
Записан
spectre71
Гость
« Ответ #6 : Ноябрь 09, 2009, 23:34 »

Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 Непонимающий
 Плачущий
нехорошо пугать юзверей

память течёт где-то, ищи. То что падает при сворачивании - нормально.

Внолне нормально!

А может память и не течет! Улыбающийся
Надо писать тесты! Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.242 секунд. Запросов: 22.