1.场景:在QT里面使用多线程进行编程时,子线程执行的函数里面使用了emit发生了内存泄露。
2.主要原因:在使用子线程时,线程使用了join()来等待子线程完成,这样使用emit也不会发送信号,因为join()是阻塞的,必须等待当前线程完成。
3.解决方法:将join()改为detach();
在QT中使用多线程时,如果子线程函数内使用emit且主线程通过join()等待,可能导致内存泄露。原因是join()的阻塞特性阻止了信号的发送。解决方法是将join()替换为detach(),使线程非阻塞运行。
1.场景:在QT里面使用多线程进行编程时,子线程执行的函数里面使用了emit发生了内存泄露。
2.主要原因:在使用子线程时,线程使用了join()来等待子线程完成,这样使用emit也不会发送信号,因为join()是阻塞的,必须等待当前线程完成。
3.解决方法:将join()改为detach();
2420
1284

被折叠的 条评论
为什么被折叠?