您的位置:首页 > 其它

GDI泄漏和内存泄漏 检测方法

2008-12-02 11:07 295 查看
GDI泄漏检测方法:

1、检查是否GetWindowDC(),后是否有 ReleaseDC()

2、CFont *pOldFont=pDC->SelectObject(&m_Font);

后是否有pDC->SelectObject(pOldFont);

3、CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());

后是否记得bmp.DeleteObject();

内存泄漏 检测方法

1、检查new,VirtualAlloc ,
HeapAlloc
,
malloc
后是否没有释放

2、_CrtMemState s1, s2, s3;
_CrtMemCheckpoint( &s1 );
  // memory allocations take place here
  _CrtMemCheckpoint( &s2 );
  
  if ( _CrtMemDifference( &s3, &s1, &s2) )
  _CrtMemDumpStatistics( &s3 );

CMemoryState msOld;

msOld.Checkpoint();

msOld.DumpAllObjectsSince();

3、_CrtSetBreakAlloc(18);

4、BoundsChecker工具

5、f:/rtm/vctools/vc7libs/ship/atlmfc/src/mfc/strcore.cpp(141)
若出现上面的输出则用_CrtDumpMemoryLeaks();来调试

f:/sourcesafe fold/mccsclient/mccsclientdlg.cpp(1863) : {63669} normal block at 0x02F21278, 8 bytes long.
Data: < x > E8 CC F1 02 F0 78 F1 02

一般这个问题是由CString引起的,追一下,改为char指针类型即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: