thinct 2017-08-12 02:05 采纳率: 0%
浏览 1823
已结题

如何解决线程中的内存泄漏问题?


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 的内存泄漏问题?

  • 写回答

2条回答 默认 最新

  • 幻想之渔 2017-08-12 03:01
    关注

    解决这种问题的最简单方式,就是避免自己直接管理内存,不要使用指针,直接使用对象,出了whlie作用域就自己析构了。或者使用智能指针

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退