Утечка памяти про запуске потоков по таймеру QThread
В проекте, созданном в Qt creator 4.9.1, есть необходимость выполнять часть кода в потоке с определённой периодичностью, сама часть кода в потоке выполняется нормально, но чем дольше работает приложение тем больше потребление оперативной памяти. До потока данная часто кода выполнялась в основном потоке и утечки памяти не было.
Класс ThreadController
#ifndef THREADCONTROLLER_H
#define THREADCONTROLLER_H
#include <QObject>
#include <QThread>
#include "ReadThread.h"
#include <QTimer>
class ThreadController : public QObject
{
Q_OBJECT
public:
ThreadController();
~ThreadController();
QThread *workingthread;
QTimer timer;
signals:
void finish();
public slots:
void deleteThread();
void threadToTimerStart();
void start_thread();
};
#endif // THREADCONTROLLER_H
ThreadController.cpp
#include "threadcontroller.h"
#include <QDebug>
#include "mainwindow.h"
ThreadController::ThreadController()
{
connect(&timer, &QTimer::timeout, this, &ThreadController::start_thread);
}
void ThreadController::start_thread()
{
MainWindow *wind = new MainWindow;
workingthread = new QThread;
ReadThread *thread = new ReadThread();
thread->moveToThread(workingthread);
connect(workingthread, &QThread::started, thread, &ReadThread::read_thread);
connect(thread, &ReadThread::finished, workingthread, &QThread::quit);
connect(thread, &ReadThread::finished, thread, &QObject::deleteLater);
connect(workingthread, &QThread::finished, workingthread, &QObject::deleteLater);
connect(workingthread, &QThread::finished, this, &ThreadController::deleteThread);
connect(thread, &ReadThread::sendPoint, wind, &MainWindow::setCar);
workingthread->start();
}
ThreadController::~ThreadController()
{
workingthread->quit();
workingthread->wait();
}
void ThreadController::deleteThread()
{
delete workingthread;
qDebug()<< "Поток завершился";
}
void ThreadController::threadToTimerStart()
{
timer.setInterval(5500);
qDebug() <<"Таймер пошёл 1";
timer.start(1000);
}
void ThreadController::deleteWorkingthread()
{
delete workingthread;
}
Изначально старался делать по примеру из справки в Qt.