天天看點

CxImage記憶體洩露

好像網上沒有關于CxImage庫記憶體洩露介紹的,如果你将其應用到實際項目的開發中,那就坑大了。

我寫的測試程式界面如下:

CxImage記憶體洩露

----------------------------------------------------------------------------------------------------------------------------

我通過開啟一條線程,不斷的進行圖檔的儲存操作,發現程式運作30分鐘左右,

記憶體洩露就很明顯了,關鍵代碼如下:

void CTestCxImageDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知處理程式代碼
	GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(TRUE);

	m_isRun=true;
	_beginthreadex(NULL,0,ThreadTestProxy,this,0,NULL);
}


void CTestCxImageDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知處理程式代碼
	GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
	m_isRun=false;
}

void CTestCxImageDlg::ThreadTest()
{
	CString imgPath;
	GetDlgItemText(IDC_TXT_IMG_PATH,imgPath);
	while(m_isRun)
	{
		DeleteFile("123.jpg");
		CxImage image(imgPath.GetBuffer(),CXIMAGE_FORMAT_JPG);
		if (image.IsValid())
		{
			image.SetJpegQuality(80);   //JPG壓縮品質
			//image.Crop(0,0,m_iCarHeadWidthSave,m_iCarHeadHeightSave);     // 截圖
			image.Crop(0,0,1024,768); 
			//image.Crop(rcCrop);
			image.Resample(800,600);       //圖檔的分辨率
			image.Save("123.jpg",CXIMAGE_FORMAT_JPG);
		}
		image.Destroy();
		Sleep(1000);
	}
}
           

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

不信的盆友,不妨一試。

例子VS2010工程下載下傳:http://download.csdn.net/detail/friendan/7723703

--------------------------------------------------------------------------------------------------------------------------------------------

CxImage記憶體洩露

您的十分滿意是我追求的宗旨。

您的一點建議是我後續的動力。