Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1106357
  • 博文数量: 8
  • 博客积分: 10015
  • 博客等级: 上将
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 09:50
文章存档

2009年(2)

2008年(6)

我的朋友

分类: C/C++

2008-05-07 11:45:35

使用 CMemoryState 函数(MFC)
在你所检测的程序段的开始和结尾处各建立一个CmemoryState对象,调用其成员函数Checkpoint,以取得当时内存使用情况的快照,然后对比前后两次快照,如果不相同则说明可能存在内存泄露的情况。
举例:

  1. #ifdef _DEBUG
  2.     CMemoryState memStateOld, memStateNew, memStateDiff;
  3.     memStateOld.Checkpoint();
  4.     TRACE("Memory Snapshot1.\n");
  5. #endif
  6.     const int size = 10240;
  7.     // 分配内存
  8.     char* buf = new char[size];
  9.    
  10.     memset(buf, 1, size);
  11.    
  12.     // 释放内存
  13.     //delete[] buf;
  14. #ifdef _DEBUG
  15.     memStateNew.Checkpoint();
  16.     TRACE("Memory Snapshot2.\n");
  17.     if(memStateDiff.Difference(memStateOld, memStateNew))
  18.     {
  19.         TRACE("Memory leaked!\n");
  20.     }
  21. #endif
阅读(1638) | 评论(0) | 转发(0) |
0

上一篇:网站的PageRank更新了

下一篇:委比和委差

给主人留下些什么吧!~~