qt socket和信号槽问题

kevinpengjiawei 2019-06-05 09:48:59
我在qt下编写socket
我的设计思路是这样的:socketserver端,当有一个连接进来时,就new一个QTcpSocket,然后给这个QTcpSocket绑定一个readyread()的信号,并且把他放到QList中存起来。当这个socket离开时,就关闭它,并且信号和槽disconnect,同时在QList中把他移除delete掉。当有另外一个连接进来时,也这样操作。
问题,当第一个连接离开后,第二个连接进来后就报错了:“free(): invalid size”



...全文
156 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
弓人水 2019-06-05
  • 打赏
  • 举报
回复
首先有个内存泄漏:QTcpSocket *currentsocket = new QTcpSocket(); 这句可以去掉,直接将nextPendingConnection的指针给它就可以了,否则new出来的对象没有被销毁,而是被新的指针覆盖了地址;
报错的原因可能是由于delete命令导致的,改成socketlist.takeAt(0).deleteLater()试试。
因为本来这个nextPendingConnection出来的对象是由QTcpServer管理的(它生产的,由它销毁即可),当然socket关闭之后,你也可以调用deleteLater来通过Qt机制销毁,提前释放内存。
kevinpengjiawei 2019-06-05
  • 打赏
  • 举报
回复
ok,学习了。感谢!

16,239

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧