我是靠谱客的博主 冷静刺猬,最近开发中收集的这篇文章主要介绍在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. QTcpServer释放时,会释放所有与之相关的QTcpSocket,从而断开所有与客户端的连接,并触发QTcpSocket的disconnected()信号,从而触发断开时的响应函数。因此只需要释放一个QTcpServer即可。避免重复释放,会报错的。
  2. 不必过多考虑QTcpServer和QTcpSocket的信号槽connect()函数的disconnect()操作,在QTcpServer和QTcpSocket被释放时,connect函数会被自动释放。
  3. 但是当QTcpServer和QTcpSocket未被释放时,注意不要重复定义connect()函数,这样会导致多个重复的信号槽被创建。
  4. 在新建一个类时,可将QTcpSocket通过指针传递进该类,但是注意不必在该类中考虑传递进来的QTcpSocket的内存释放,在主函数中释放即可。
  5. 释放通常使用 if(XXX) delete XXX; 的语句。
  6. QTcpServer释放前需要先close。QTcpSocket释放前需要先abort。
  7. 多线程的内存释放,特别要注意当在多线程中使用到while死循环时,注意避免这样使用死循环。
    while(1)
    {
    }
    
    因为这样的死循环,会导致线程无法推出。应当添加一个bool标志符,如下。
    bool run_flag = true;
    while(run_flag)
    {
    }
    
    当需要退出该线程时,先结束死循环,而后退出,如下。
    run_flag = false;
    this->exit(0);
    

最后

以上就是冷静刺猬为你收集整理的在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点的全部内容,希望文章能够帮你解决在Qt使用QTcpServer和QTcpSocket及多线程时安全释放内存的几个注意点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部