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次?希望有知道的大佬不吝指点。