Утечка памяти про запуске потоков по таймеру 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.


Ответы (0 шт):