qt版本5.4
项目在使用qt中QNetworkAccessManager进行网络通信时发现内存不停的增长,我当然知道每次new后都需要deleteLater来释放,但是这个操作在高频率时是没有用的(控制权很难回到QApplication对象上,一直在做逻辑操作,QApplication对象没有机会去释放队列里面的内容),deleteLater原理请自行百度;
QNetworkAccessManager其实是用线程来访问网络的,deleteLater释放貌似在线程结束前?所以deleteLater不执行,线程一直不结束,内存被占用(如果错误请网友指正,以免坑人)
怎么解决呢?先看官方代码片段
片段1
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
片段2
QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
QNetworkReply *reply = manager->get(request);
connect(reply, SIGNAL(readyRead()), this