_CrtDumpMemoryLeaks报告程序中的内存泄露问题(简单示例代码)

// .h 文件
#pragma once
class CConsoleDump
{
public:
    explicit CConsoleDump(LPCTSTR lpszWindowTitle = NULL);
    virtual ~CConsoleDump(void);  

public:
    BOOL DUMP(LPCTSTR lpszFmt, ...);
    BOOL ShowWindow(BOOL bShowWindow);
    BOOL SetWindowText(LPCTSTR lpszWindowTitle = NULL);
};  

// .cpp文件
#include "StdAfx.h"
#include "ConsoleDump.h"  

#define MAX_BUFFER_SIZE (10 * 1024)  

CConsoleDump::CConsoleDump(LPCTSTR lpszWindowTitle)
{
    if(AllocConsole())
    {
        if(NULL != lpszWindowTitle)
        {
            SetConsoleTitle(lpszWindowTitle);
        }
    }
}  

CConsoleDump::~CConsoleDump(void)
{
    FreeConsole();
}  

BOOL CConsoleDump::ShowWindow(BOOL bShowWindow)
{
    return ::ShowWindow(GetConsoleWindow(), bShowWindow ? SW_SHOW : SW_HIDE);
}  

BOOL SetWindowText(LPCTSTR lpszWindowTitle)
{
    if(NULL != lpszWindowTitle)
    {
        return SetConsoleTitle(lpszWindowTitle);
    }
    return TRUE;
}  

BOOL CConsoleDump::DUMP(LPCTSTR lpszFmt, ...)
{
    TCHAR szText[MAX_BUFFER_SIZE] = {0};  

    va_list arglist;
    va_start(arglist, lpszFmt);
    _vstprintf_s(szText, _countof(szText), lpszFmt, arglist);
    va_end(arglist);  

    return WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), szText, _tcslen(szText), NULL, NULL);
}  

// 测试使用
CConsoleDump m_dump; // 定义为类的成员变量
// 需要的地方利用CConsoleDump::DUMP函数输出log信息即可
m_dump.DUMP(_T("Hello, World!\r\n")); 

这只是个简单的封装了Console相关的几个函数,关于更多的Console相关的控制,可以参考MSDN文档中的

参考:http://blog.csdn.net/visualeleven/article/details/7628564

时间: 2024-11-06 05:43:22

_CrtDumpMemoryLeaks报告程序中的内存泄露问题(简单示例代码)的相关文章

[Swift通天遁地]七、数据与安全-(11)如何检测应用程序中的内存泄露

本文将演示使用Instruments Allocations工具检测应用程序中的内存泄漏问题. 内存溢出 out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出. 内存泄露 memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光. 在项目文件夹[DemoApp]上点击鼠标

查找并修复Android中的内存泄露—OutOfMemoryError

[编者按]本文作者为来自南非约翰内斯堡的女程序员 Rebecca Franks,Rebecca 热衷于安卓开发,拥有4年安卓应用开发经验.有点完美主义者,喜爱美食. 本文系国内ITOM管理平台 OneAPM 编译呈现,以下为正文. Android 程序中很容易出现内存泄露问题.毫无戒心的开发者可能每天都会造成一些内存泄露,却不自知.你可能从未注意过这类错误,或者甚至都不知道它们的存在.直到你遇到下面这样的异常: java.lang.OutOfMemoryError: Failed to allo

VS中捕获内存泄露

VS中捕获内存泄露 内存泄露十分讨厌,捕获内存泄露更加令人厌烦-- 其实,VS本身就有内存泄露的检测机制.只需做以下操作即可开启.(同时必须在debug模式 下运行程序并且以 正常流程退出 ) // 在入口函数cpp中添加以下定义和头文件 #define CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> // 在入口函数一开始添加以下代码 _CrtDumpMemoryLeaks(); _CrtSetDbgFlag ( 

了解 JavaScript 应用程序中的内存泄漏

简介 当处理 JavaScript 这样的脚本语言时,很容易忘记每个对象.类.字符串.数字和方法都需要分配和保留内存.语言和运行时的垃圾回收器隐藏了内存分配和释放的具体细节. 许多功能无需考虑内存管理即可实现,但却忽略了它可能在程序中带来重大的问题.不当清理的对象可能会存在比预期要长得多的时间.这些对象继续响应事件和消耗资源.它们可强制浏览器从一个虚拟磁盘驱动器分配内存页,这显著影响了计算机的速度(在极端的情形中,会导致浏览器崩溃). 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在.在最近几

Java中的内存泄露 和 JVM GC(垃圾回收机制)

一.什么是Java中的内存泄露? 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点, 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连:其次,这些对象是无用的,即程序以后不会再使用这些对象. 如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存. 在C++中,内存泄漏的范围更大一些.有些对象被分配了内存空间,然后却不可达,由于C++中没有GC,这些内存将永远收不回来. 在Java中,这些不可达的对象都由GC负

vs2010 win32程序中 sqlserver 2008 express的简单使用 (C++)

由于短学期作业需要在之前程序的服务器中加入数据库,就简单学习了下vs2010中自带的数据库sqlsever2008,学习的过程并不是很顺利,在网上没有找到特别完整的教程,现在课程结束了,特地来写一个,以方便后面的孩纸们,由于本人也是学的半懂不懂的,如果有什么不对的地方还请大家指正! 一.从零开始,建立一个数据库 (1)打开VS2010,工具->连接到数据库,然后在弹出的对话中框选择“Microsoft SQL Server”,单击“继续” (2)在下图所示对话框“服务器名”中输入“自己的计算机名

C#控制台程序中处理2个关闭事件的代码实例

应用场景 我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭.如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理. 处理方法 在.net平台下Console类有个CancelKeyPress事件可以处理Ctrl+C,不过对于直接关闭控制台应用,这种处理就无能为力了. 不过Windows API中有个SetConsoleCtrlHandler函数可以处理这两种关闭事件. C#处理代码如下: 代码如下: static class Pr

java按照集合中元素的属性进行排序示例代码

public class Student { private String name; private int age; private int id; public Student() {  super(); } public Student(String name, int age, int id) {  super();  this.name = name;  this.age = age;  this.id = id; } public String getName() {  retur

在VC++中启用内存泄露检测

检测内存泄漏的主要工具是调试器和 CRT 调试堆函数.若要启用调试堆函数,请在程序中包括以下语句: #define CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h> 注意   #include 语句必须采用上文所示顺序.如果更改了顺序,所使用的函数可能无法正确工作. 通过包括 crtdbg.h,将 malloc 和 free 函数映射到其“Debug”版本 _malloc_dbg 和 _free_dbg,这些函数将跟踪内存