【一个类中调用另一个类中函数,其中tcp->connectToHost(ip,端口)会导致错误】

大树学长 2017-09-29 05:29:50
A类中调用B类一个函数
函数为
{
socket->connectToHost("IP", 端口); //错误
socket->waitForConnected(3000);
}


弹出错误显示:CS.exe 中的 0x01001d5c 处有未经处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突

本来是想写一个网络通信类的,在A类中调用B类来连接服务器。
...全文
974 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大树学长 2017-10-10
  • 打赏
  • 举报
回复
引用 4 楼 qqwangfan 的回复:
此种错误一般是访问了非法内存导致,要不是还没有分配内存,要么是内存越界。 估计是socket没有申请内存空间,可以加一个判断,if(socket != NULL) 看看socket是不是空指针
是这么回事,我将申请内存空间放在了B类的构造函数中,但是因为是A直接调用B函数,所以没有经过构造函数,我现在改过来了。 但是socket我申请的是类变量,也就是在B类的头文件中QTcpSocket *socket,在A调用完B函数后还是会出现一样的内存泄漏问题,我如果将QTcpSocket *socket直接放在B函数中就没有问题? { QTcpSocket *socket;//没有问题,放在头文件中就会有内存泄漏的问题 socket = new QTcpSocket(); socket->connectToHost("IP", 端口); socket->waitForConnected(3000); }
  • 打赏
  • 举报
回复 1
此种错误一般是访问了非法内存导致,要不是还没有分配内存,要么是内存越界。 估计是socket没有申请内存空间,可以加一个判断,if(socket != NULL) 看看socket是不是空指针
大树学长 2017-10-09
  • 打赏
  • 举报
回复
引用 1 楼 cuzn1024 的回复:
socket有实例化么?
当然
  • 打赏
  • 举报
回复
socket有实例化么?
橙儿稻香 2017-09-30
  • 打赏
  • 举报
回复
推荐把socket的B类改成一个线程,把A对B的调用改为信号SIGNAL触发 触发函数可以去尝试连接 connectToHost

16,213

社区成员

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

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