Russian Qt Forum

Qt => Общие вопросы => Тема начата: max1983 от Ноябрь 09, 2009, 17:19



Название: QThread утечка памяти - остановить поток и освободить память.
Отправлено: 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);
я так полагаю что это заставит поток остановится
но ресурсы занятыем им не освобождаются
так как память занятая программой увеличивается.
Что сделать?


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: kuzulis от Ноябрь 09, 2009, 19:06
см. void QObject::deleteLater ()   [slot]


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: spectre71 от Ноябрь 09, 2009, 19:15
Код
C++ (Qt)
MyThread::MyThread(bool FreeOnComplete, QObject* parent) : QThread(parent) {
// ...
// ...
 if(FreeOnComplete) {connect(this , SIGNAL(finished()), this , SLOT(deleteLater()));}
}


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: max1983 от Ноябрь 09, 2009, 20:55
Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 ???
 :'(
нехорошо пугать юзверей


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: Igors от Ноябрь 09, 2009, 21:20
нехорошо пугать юзверей
Что это за пользователь такой слабонервный? У меня по 9-10Gb занимают за 1 минуту - и отлично себя чувствуют :)
Ну а по существу - может быть все что угодно, запрягайте tools, сообщайте детали - а то проблема слишком общая.


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: Alex Custov от Ноябрь 09, 2009, 21:49
Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 ???
 :'(
нехорошо пугать юзверей

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


Название: Re: QThread утечка памяти - остановить поток и освободить память.
Отправлено: spectre71 от Ноябрь 09, 2009, 23:34
Жютко извенятся!!!
Потоки если и виноваты то косвенно.
Программа за 1 час в диспетчере задач показывает что заняла 100 метров оперативной памяти.
Но если программу свернуть то сразу падает на 2 метра.
Что это может быть?
 ???
 :'(
нехорошо пугать юзверей

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

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

А может память и не течет! :)
Надо писать тесты! :)