• Visual Studio 内存泄漏检测方法


    Visual Studio 内存泄漏检测方法
    非MFC程序可以用以下方法检测内存泄露:
    1.程序开始包含如下定义:
    #ifdef _DEBUG
    #define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
    #else
    #define DEBUG_CLIENTBLOCK
    #endif // _DEBUG
    #define _CRTDBG_MAP_ALLOC
    #include <stdlib.h>
    #include <crtdbg.h>
    #ifdef _DEBUG
    #define new DEBUG_CLIENTBLOCK
    #endif // _DEBUG
    2.程序中添加下面的函数:
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
    Debug版本程序运行结束后如有内存泄漏,输出窗口中会显示类似信息:
    Detected memory leaks!
    Dumping objects ->
    g:programs est est.cpp(16) : {51} client block at 0x00385C58, subtype 0, 4 bytes long.
    Data: <    > CD CD CD CD 
    Object dump complete.
    MFC程序内存泄漏检测方法:
    1.在 CMyApp 中添加如下三个 CMemoryState 类的成员变量:
    #ifdef _DEBUG
    protected:
          CMemoryState m_msOld, m_msNew, m_msDiff;
    #endif // _DEBUG
    2.在 CMyApp::InitInstance() 中添加如下代码:
    #ifdef _DEBUG
          m_msOld.Checkpoint();
    #endif // _DEBUG
    3.在 CMyApp::ExitInstance() 中添加如下代码:
    #ifdef _DEBUG
          m_msNew.Checkpoint();
          if (m_msDiff.Difference(m_msOld, m_msNew))
          {
                afxDump<<" Memory Leaked : ";
                m_msDiff.DumpStatistics();
                afxDump<<"Dump Complete ! ";
          }
    #endif // _DEBUG
    Debug版本程序运行结束后如有内存泄漏,输出窗口中会显示类似信息:
    Memory Leaked :
    0 bytes in 0 Free Blocks.
    8 bytes in 1 Normal Blocks.
    0 bytes in 0 CRT Blocks.
    0 bytes in 0 Ignore Blocks.
    0 bytes in 0 Client Blocks.
    Largest number used: 8825 bytes.
    Total allocations: 47506 bytes.
    Dump Complete !
    Detected memory leaks!
    Dumping objects ->
    g:programschatchatdlg.cpp(120) : {118} normal block at 0x00D98150, 8 bytes long.
    Data: <        > A8 7F D9 00 01 00 00 00 
    Object dump complete.
  • 相关阅读:
    git命令log与reflog的比较
    git基础仓库提交到新仓库,保存老仓库历史,并同步老仓库跟新到新仓库中
    classpath*与classpath
    fastjson将对象和json互转,@JSONField的使用及不生效
    feign接口自动生成工具
    IIS .Net Core 413错误和Request body too large解决办法
    thinphp 上传文件到七牛
    php 整合微信、支付宝扫码付款
    Jenkins:整合SonarQube8
    Jenkins:流水线打包运行boot项目
  • 原文地址:https://www.cnblogs.com/cplover/p/3372038.html
Copyright © 2020-2023  润新知