【发布时间】:2018-01-12 02:14:20
【问题描述】:
当我尝试在 Qt 中做多线程时,例如:
如果我像这样在另一个类中创建一个类对象:
QThread thread;
Worker worker;
worker.moveToThread(thread);
当我关闭程序时会导致运行时错误。
但是如果我像这样通过指针创建类对象:
QThread* thread = new QThread;
Worker* worker = new Worker();
worker->moveToThread(thread);
不会出错。为什么我必须这样做?
并且我必须在使用后删除指针吗?如果我不这样做,那会导致内存泄漏吗?我看到很多教程都这样删除它们:
connect(worker, SIGNAL (finished()), thread, SLOT (quit()));
connect(worker, SIGNAL (finished()), worker, SLOT (deleteLater()));
connect(thread, SIGNAL (finished()), thread, SLOT (deleteLater()));
【问题讨论】:
标签: c++ multithreading qt qthread