|
wince5.0下内存泄露,很微小的,几分钟增长4k
[复制链接]
定时器3秒执行一次
- Invalidate();
- UpdateWindow();
复制代码
整个程序就干这一件事,隔3秒显示一张图片。但是我用wince的系统属性查看正在使用的内存数,隔几分钟就会增长4K,我联系观察了几个小时,很有规律。
- void CshowphotoDlg::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- static BYTE i=0;
- TCHAR strtp[256];
- wsprintf(strtp,L"\\nand flash\\cdqres\\%d.bmp",i%3);
- i++;
- HBITMAP hBitmapBk;
- hBitmapBk=(HBITMAP)SHLoadDIBitmap( strtp);
- CRect rectBK; // 客户区的大小
- CDC dcTemp;
- CBitmap clientBmp;
- CBitmap bmBK; // 位图对象
- bmBK.Attach( hBitmapBk );
- BITMAP stBitmap;
- bmBK.GetObject(sizeof(BITMAP),&stBitmap);
- CSize bmSize(stBitmap.bmWidth,stBitmap.bmHeight);
- dcTemp.CreateCompatibleDC(&dc);
- CBitmap *pOld=dcTemp.SelectObject(&bmBK);
- GetWindowRect(&rectBK); // 取得客户区的大小
- dcMen.CreateCompatibleDC(&dc);
- clientBmp.CreateCompatibleBitmap(&dc,rectBK.Width(),rectBK.Height());
- CBitmap *pOld1=dcMen.SelectObject(&clientBmp);
-
- dcMen.StretchBlt(rectBK.left,rectBK.top,rectBK.Width(),rectBK.Height(),&dcTemp,0,0,bmSize.cx,bmSize.cy,SRCCOPY);
-
- dc.BitBlt(rectBK.left,rectBK.top,rectBK.Width(),rectBK.Height(),&dcMen,rectBK.left,rectBK.top,SRCCOPY);
- dcTemp.SelectObject(pOld);
- dcTemp.DeleteDC();
- dcMen.SelectObject(pOld1);
- dcMen.DeleteDC();
- bmBK.Detach();
- clientBmp.DeleteObject();
- DeleteObject(hBitmapBk);
- }
复制代码
|
|