这个问题测试过了,其实并不是内存泄漏,而是使用问题
首先你在线程中发送的 emit 信号是一个异步信号, 异步信号在qt 中都是当作 事件处理的,统一加入到事件队列中
qt的事件队列没有加入防错设置,是一个无限增加的队列,因为是异步,所以当入队事件远远大于出队事件时候,就会把队列塞爆炸,
如果你的机器内存可以非常大,那么程序就会过很久才会因为内存溢出崩溃,不然程序很快就会挂掉.
这个时候有两种方法处理, 原理都是给队列时间去释放内存.
1: 不要用while循环这种没有时间差的处理循环,改用定时器,一定时间去发送信号.
2: 在while循环中,发送信号后,休眠线程,根据你机器的处理能力去决定休眠的时间长短,msleep,usleep,sleep
如果你的信号是一个同步信号,那么就不需要关心上边的,因为执行完信号,就会直接调用槽,然后释放.
永远不会有内存溢出问题!