zoukankan      html  css  js  c++  java
  • C/C++程序内存泄漏检测

    1. 包含头文件和定义:#define _CRTDBG_MAP_ALLOC
    #include <stdlib.h>
    #include <crtdbg.h>
    如果定义了_CRTDBG_MAP_ALLOC,打印出来的是文件名和行数等更加直观的信息。

    2. 方法一
    在程序入口写几个语句:
    int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
    tmpFlag |= _CRTDBG_LEAK_CHECK_DF;
    _CrtSetDbgFlag( tmpFlag );
    程序退出时,如果发现有内存泄漏,会自动在DEBUG OUTPUT窗口和DebugView中输出内存泄漏信息。

    3. 方法二在程序任何地方用以下语句:
    _CrtDumpMemoryLeaks();
    随时检测打印内存泄漏信息,如果有的话。不过此用法有个局限,对于一些全局函数,如果初始化时申请了内存,到程序结束时候才释放,此函数会一直把新申请的内存当作泄漏来对待。

    4. 方法三
    使用_CrtMemCheckpoint方法,在某段程序中统计泄漏信息。如下:
    _CrtMemState s1, s2, s3;
    _CrtMemCheckpoint( &s1 );

    // 程序段1:DO SOMETHING

    _CrtMemCheckpoint( &s2 );
    if ( _CrtMemDifference( &s3, &s1, &s2) )
    _CrtMemDumpStatistics( &s3 );

    可以统计程序段1中是否发生了内存泄漏。

    转载自http://www.cppblog.com/edog/archive/2006/02/15/3268.html
    
  • 相关阅读:
    ssh免密钥登陆的两种方式
    python 项目实战之装饰器
    python 项目实战之随机杀死程序
    python paramiko外部传参和内部调用命令的方法
    linux screen 工具
    shell删除三天前或者三天内的文件
    CentOS7.3安装Go运行和开发环境
    4.Linq to Xml
    30.第一个Linq 数据库查询
    html 图标库
  • 原文地址:https://www.cnblogs.com/flypiggy/p/3113672.html
Copyright © 2011-2022 走看看