概述
- QTcpServer释放时,会释放所有与之相关的QTcpSocket,从而断开所有与客户端的连接,并触发QTcpSocket的disconnected()信号,从而触发断开时的响应函数。因此只需要释放一个QTcpServer即可。避免重复释放,会报错的。
- 不必过多考虑QTcpServer和QTcpSocket的信号槽connect()函数的disconnect()操作,在QTcpServer和QTcpSocket被释放时,connect函数会被自动释放。
- 但是当QTcpServer和QTcpSocket未被释放时,注意不要重复定义connect()函数,这样会导致多个重复的信号槽被创建。
- 在新建一个类时,可将QTcpSocket通过指针传递进该类,但是注意不必在该类中考虑传递进来的QTcpSocket的内存释放,在主函数中释放即可。
- 释放通常使用 if(XXX) delete XXX; 的语句。
- QTcpServer释放前需要先close。QTcpSocket释放前需要先abort。
- 多线程的内存释放,特别要注意当在多线程中使用到while死循环时,注意避免这样使用死循环。
因为这样的死循环,会导致线程无法推出。应当添加一个bool标志符,如下。while(1) { }
当需要退出该线程时,先结束死循环,而后退出,如下。bool run_flag = true; while(run_flag) { }
run_flag = false; this->exit(0);
最后
以上就是冷静刺猬为你收集整理的在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点的全部内容,希望文章能够帮你解决在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复