• 3957阅读
  • 1回复

[提问]QNetworkAccessManager get post 内存不断增加 [复制链接]

上一主题 下一主题
离线yuyu414
 

只看楼主 倒序阅读 楼主  发表于: 2014-10-19
— 本帖被 XChinux 从 其它技术开发讨论区 移动到本区(2015-07-28) —
  1. MainWindow::MainWindow(QWidget *parent) :
  2.     QMainWindow(parent),
  3.     ui(new Ui::MainWindow)
  4. {
  5.     ui->setupUi(this);
  6.     manager = new QNetworkAccessManager(this);
  7.     connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onfinished(QNetworkReply*)));
  8. }
  9. void MainWindow::onfinished(QNetworkReply *reply)
  10. {
  11.     qDebug() << reply->readAll();
  12.     reply->abort();
  13.     reply->close();
  14.     reply->deleteLater();
  15. }
  16. void MainWindow::on_pushButtonLogin_clicked()
  17. {
  18.     isNeedVcode();
  19. }
  20. int MainWindow::isNeedVcode()
  21. {
  22.     QNetworkRequest request;
  23.     //QString strurl = QString("http://www.baidu.com");
  24.     QString strurl = QString("http://check.ptlogin2.qq.com/check?&uin=870603664");
  25.     request.setUrl(QUrl(strurl));
  26.     //
  27.     request.setRawHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)");
  28.     //
  29.     manager->get(request);
  30.     return 0;
  31. }

最近在用Qt的QNetworkAccessManager,用一个定时器去不停的get一个网址,发现内存不断增加,搜了一下,发现要用deleteLater,但是还是没用,奇怪的是不同的网址结果不一样,像百度主页,腾讯主页,都没问题没有内存一直增加的现象。没有用定时器,用了一个按钮,在任务管理器可以很清楚的看见,每点一次,内存还有句柄数都在不断增加。程序不变,只要改一个网址,就没问题了。测试的网址一个是百度主页,另一个是QQ空间登录的时候检测是否需要输入验证码的,随便写个号码测试一下。百度谷歌了很久,都是说要 reply->deleteLater();,官方文档也是这么说的,但是确实没用啊,各位大神,Help测试源码,很简单的一个:

离线345519690

只看该作者 1楼 发表于: 2018-08-20
楼主你好,不知道这个问题解决没,想请教下解决方法
快速回复
限100 字节
 
上一个 下一个