首页| 论坛| 消息

标题:信号槽传QByteArray的内存泄露
作者:usethisname
日期:2020-04-17 18:13
内容:

求解出现这个现象的原因。
代码如下:
QThread threadA,threadB;
WorkA *wa = new WorkA;
WorkA *wb = new WorkA;
wa->setObjectName("waaaaaaa");
wb->setObjectName("wbbbbbbb");
QByteArray aa("123123123");
qDebug()dowork(aa);
});
threadA.start();
threadB.start();

WorkA类定义如下:
class WorkA : public QObject
{
Q_OBJECT
public:
signals:
void sendWork(QByteArray data);
public slots:
void dowork(QByteArray data)
{
QThread::msleep(20);
qDebug()


#1 [liulin188 04-18 13:13]
没看明白
#2 [xllwanlxy 04-18 16:27]
首先,明确告诉你,不是内存泄露。
为什么wb->moveToThread(&threadB)内存不会增加呢?
wa和wb在不同的线程中,信号槽是事件队列的方式。
为什么wb->moveToThread(&threadA)时,内存会增加呢?
wa和wb在同一个线程,信号槽的连接是直接连接,相当陷入了一个递归调用。

回复 发表
主题 版块