QT实现http post请求发生内存泄漏

23 篇文章 0 订阅

Show code first:

	QByteArray ba = getData();		//自己的方法,用于获取数据
	
	QNetworkAccessManager* manager = new QNetworkAccessManager;
	QNetworkRequest request;
	request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
	request.setUrl(m_url);
		QEventLoop e;
		QObject::connect(manager, &QNetworkAccessManager::finished, &e, &QEventLoop::quit);
	
	while(1){
		manager->post(request, ba);
		e.exec();
	}

代码如上所示,借鉴了网上的一些例子。
项目初期没有留意,测试阶段懵了,基于不同的测试场景,泄漏速度最大是10M/min,玩个卵子。。。
查询了QT的官方手册,发现了这么一句话:
在这里插入图片描述
new。。。能不漏吗?
代码修改如下:

	QByteArray ba = getData();		//自己的方法,用于获取数据
	
	QNetworkAccessManager* manager = new QNetworkAccessManager;
	QNetworkReply *reply = NULL;
	QNetworkRequest request;
	request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
	request.setUrl(m_url);
		QEventLoop e;
		QObject::connect(manager, &QNetworkAccessManager::finished, &e, &QEventLoop::quit);
	
	while(1){
		reply = manager->post(request, ba);
		e.exec();
		reply->deleteLater();
		reply = NULL;
	}

最后还有一点想法,QT的机制中难道每发送一次post请求,就会new一个reply对象?那我如果基于业务要求每天成千上万次的post,我就得new n次,然后delete n次?希望有知道的大佬不吝指点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值