vector导致内存不断增长
C++新手,
线程循环判断打印机队列信息
10毫秒是方便测试使用.
结果发现内存不断上升,何解?
{
//文档名
CString documentName;
DWORD dStatus;
//序号
int dindex;
};
//获取打印队列详细信息返回vector
vector<CPrintDealSrv::PRINTER_JOB_INFO>* CPrintDealSrv::GetPrintJobList(void)
{
vector<PRINTER_JOB_INFO>* vlist = new vector<PRINTER_JOB_INFO>;
CString strPrinterName = _T("Microsoft XPS Document Writer");
HANDLE hPrintHandle;
LPTSTR lpPrinerName = strPrinterName.GetBuffer();
strPrinterName.ReleaseBuffer();
JOB_INFO_2 *pJobs;
int cJobs;
DWORD dwPrinterStatus;
PRINTER_JOB_INFO jobSimpleInfo;
jobSimpleInfo.documentName = pJobs[i].pDocument;
jobSimpleInfo.dindex = (i+1);
jobSimpleInfo.dStatus = pJobs[i].Status;
vlist->push_back(jobSimpleInfo);
return vlist;
}
//线程方法
UINT CPrintDealSrv::thStartPrintSrv(LPVOID lparm)
{
CPrintDealSrv * pPrintDeal = (CPrintDealSrv*)lparm;
vector<PRINTER_JOB_INFO>* vlist;
while(true)
{
vlist = pPrintDeal->GetPrintJobList();
Sleep(10);
delete vlist;
}
}
//获取成功
else{
if (cJobs > 0)
{
//队列中有待打印文档
for (int i = 0;i < cJobs; i ++)
{
PRINTER_JOB_INFO jobSimpleInfo;
jobSimpleInfo.documentName = pJobs[i].pDocument;
jobSimpleInfo.dindex = (i+1);
jobSimpleInfo.dStatus = pJobs[i].Status;
vlistPrintJobInfo->push_back(jobSimpleInfo);
}
}
//释放内存
free pJobs;
}