QNetworkAccessManager get post 内存不断增加

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

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::onfinished(QNetworkReply *reply)
{
qDebug() << reply->readAll();
reply->abort();
reply->close();
reply->deleteLater();
}

void MainWindow::on_pushButtonLogin_clicked()
{
isNeedVcode();
}

int MainWindow::isNeedVcode()
{
QNetworkRequest request;
//QString strurl = QString("http://www.baidu.com");
QString strurl = QString("http://check.ptlogin2.qq.com/check?&uin=870603663");
request.setUrl(QUrl(strurl));
//
request.setRawHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)");
//
manager->get(request);

return 0;
}
...全文
2245 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hary_chen 2016-09-12
  • 打赏
  • 举报
回复
楼主问题解决了吗? 我这里也遇到了很多方法都试过了 但是没用
foruok 2014-10-20
  • 打赏
  • 举报
回复
get返回一个QNetworkReply对象,代表网络响应,请记得删除它…… 你可以对get进行计数,在onFinished中也计数,对比一下,看是否每个get都finish了……
yyxmm 2014-10-20
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
get返回一个QNetworkReply对象,代表网络响应,请记得删除它…… 你可以对get进行计数,在onFinished中也计数,对比一下,看是否每个get都finish了……
已经reply->deleteLater();了,这是文档推荐的做法,奇怪的是 有的网站正常

16,819

社区成员

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

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