测试qtcpsocket内存释放问题,如下代码,发现内存并没有释放掉,随着链接数量的增加,内存占用慢慢变大。
for(int i=0;i<200;i++)
{
if(socket !=NULL){
socket->abort();
}
socket=NULL;
socket =new QTcpSocket();
connect(socket,SIGNAL(readyRead()),this,SLOT(tcpReadData()));
connect(socket,SIGNAL(disconnected()),this,SLOT(tcpDisconnected()));
socket->connectToHost("www.baidu.com",80);
}
改用如下方式,内存基本不变。
for(int i=0;i<200;i++)
{
delete socket;
socket =new QTcpSocket();
connect(socket,SIGNAL(readyRead()),this,SLOT(tcpReadData()));
connect(socket,SIGNAL(disconnected()),this,SLOT(tcpDisconnected()));
socket->connectToHost("www.baidu.com",80);
}
所以项目中有用qtcpsocket通信的地方,肯定会用到断线重连,重连时一定记得将之前的delete。