我使用 qt4.8.5 和 windows。我使用 QTcpSocket 连接服务器。如果服务器没有打开,那么我会尝试连接它。我的方法是:
sock = new QTcpSocket(this);
sock->connectToHost("127.0.0.1", 1234);
connect(sock, SIGNAL(disconnected()), this, SLOT(disconnected()));
connect(sock, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(error(QAbstractSocket::SocketError)));
我会得到 error() 信号。
sock->close();
sock->deletelater();
我使用计时器尝试连接,它确实调用了 error() 来删除袜子。但是我发现任务管理器中的句柄增加了。它有内存泄漏吗?但我关闭了袜子并使用 deletelater()。更重要的是,socket对象不在主线程中运行。
如果有人知道导致手柄增加的原因,请告诉我。谢谢!