您的位置:首页 > 产品设计 > 产品经理

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

2015-09-29 22:07 621 查看
// .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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: