多线程 内存泄漏?

coderchenjingui 2012-09-19 05:56:24

//articleNameList需要下载的列表
foreach(QString aName,articleNameList)
{
downLoadThread *thread=new downLoadThread;
//articleMap为QMap类型,key名 value:url
thread->initArticle(aName,articleMap[aName],"C:\\Users\\Administrator\\Desktop\\blog\\");
connect(thread,SIGNAL(finished()),this,SLOT(deleteThread()));
thread->start();
}


这是下载线程的主要函数:

//设置 名,url,保存目录
void downLoadThread::initArticle(const QString &name, const QString &url,const QString& saveDir)
{
articleName=name;
articleUrl=url;
savePathDir=saveDir;
}

void downLoadThread::run()
{
QNetworkAccessManager manager;
connect(&manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply*)));
manager.get(QNetworkRequest(QUrl(articleUrl)));
exec();
}
//下载,打印pdf
void downLoadThread::requestFinished(QNetworkReply *reply)
{
QString htmlText=QString::fromUtf8(reply->readAll());
QRegExp reg(tr("class=\"article_content\">(.*)</div>"));
reg.setMinimal(true);
if(htmlText.indexOf(reg)!=-1)
{
QTextDocument textDocument;
textDocument.setHtml(reg.cap(1));
QPrinter printer(QPrinter::ScreenResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName(savePathDir+articleName+".pdf");
printer.setPageSize(QPrinter::Custom);
printer.setPageMargins(4,1,6,1,QPrinter::Millimeter);
printer.setOrientation(QPrinter::Portrait);
textDocument.print(&printer);
}
exit();
}



开80个线程,结果内存从4M升到40M,然后降到20M就不在降了。
...全文
123 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
只要内存稳定在一个值就不是内存泄露
coderchenjingui 2012-09-19
  • 打赏
  • 举报
回复
为什么 打个 “开辟线程”就发不出去?
coderchenjingui 2012-09-19
  • 打赏
  • 举报
回复
“开辟”难道是非法词组?

16,239

社区成员

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

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