zoukankan      html  css  js  c++  java
  • 应用CMemoryState动态检测内存泄漏

    使用MFC开发,当程序退出时,Visual Studio会在输出窗口提供关于内存泄漏信息的提示,但也仅仅是在退出后才给出提示,如果想在运行过程中在输出窗口看到关于当前内存泄漏的信息,就需要借助MFC类CMemoryState.

    这个类在afx.h头文件中定义在Debug模式下,因此使用这个类也需要在Debug模式下。

    CMemoryState类的主要成员函数如下:

        .Checkpoint 取得当前内存状态的一个快照或“检查点” 
        .Difference 计算两个CMemoryState类型的对象之间的差异
        .DumpAllObjectsSince 从前一个检查点开始转储所有分配对象的摘要
        .DumpStatistics 打印一个CMemoryState 对象的内存分配统计信息

    范例(检测内存泄漏):

    #ifdef _DEBUG

        CMemoryState  msStart, msEnd, msDiff;
        msStart.Checkpoint();

        
    int *pNum = new int;
        
    //delete pNum;

        msEnd.Checkpoint();

        
    if( msDiff.Difference( msStart, msEnd ) )
        {
            
    //检测到内存泄漏

            
    //输出内存泄漏的信息
            msDiff.DumpAllObjectsSince();
        }

    #endif

    运行时在输出窗口显示:

    Dumping objects ->
    {90} normal block at 0x00EB2D58, 4 bytes long.
     Data: <    > CD CD CD CD
    Object dump complete.

  • 相关阅读:
    Scala--基础
    maven
    Storm 运行例子
    Storm 安装部署
    Storm
    Kafka 集群部署
    Redis Twemproxy
    Redis Sentinel
    获取URL中参数的值
    浏览器滚动条样式
  • 原文地址:https://www.cnblogs.com/fangkm/p/1460327.html
Copyright © 2011-2022 走看看