main.cpp
#include <QCoreApplication>
#include "thread.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Thread* thread = new Thread();
thread->start();
return a.exec();
}
thread.h
#ifndef THREAD_H
#define THREAD_H
#include <QThread>
#include <QDebug>
class Thread : public QThread
{
Q_OBJECT
public:
explicit Thread(QObject *parent = 0)
: QThread(parent), exitFlag(false) {}
void run() Q_DECL_OVERRIDE {
if (exitFlag) {
return;
}
while (true) {
Thread* t = new Thread();
t->exitFlag = true;
connect(t, &QThread::finished, [=](){
t->deleteLater(); // 这里没有真正删除,因为有内存泄漏
});
t->start();
// 在线程t结束之后,删除t
}
}
signals:
public slots:
public:
bool exitFlag;
};
#endif // THREAD_H
怎样在解决线程 t 的内存泄漏问题?