博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

Hello World

  testdev.cublog.cn

关于作者
姓名:WangYang
职业:Software Engineer
年龄:26
位置:Beijing
个性介绍:为桌面增添价值
我的主页: www.dtapp.cn
|| << >> ||
我的分类


如何检查内存是否泄露

使用 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

发表于: 2008-05-07,修改于: 2008-05-07 11:45,已浏览330次,有评论0条 推荐 投诉


网友评论
 发表评论