ユーザ用ツール

サイト用ツール




サイドバー

C++/CLI

CLR

実用編

その他

実用編:ヒープのメモリリーク診断

ヒープのメモリリーク診断

マイクロソフトのCランタイムにはヒープメモリのリーク診断機能があります。

stdafx.h(またはすべてのソースファイルがインクルードするヘッダファイル)に以下を追加。

#if _DEBUG
#include <crtdbg.h>
#define malloc(size) _malloc_dbg(size, _NORMAL_BLOCK, __FILE__, __LINE__ )
#define calloc(s1,s2) _calloc_dbg(s1, s2, _NORMAL_BLOCK, __FILE__, __LINE__ )
#define realloc(p,s) _realloc_dbg(p, s, _NORMAL_BLOCK, __FILE__, __LINE__)
#define free(p)  _free_dbg(p, _NORMAL_BLOCK)
inline void* operator new(size_t nSize, LPCSTR lpszFileName, int nLine)
{
 return _malloc_dbg(nSize, _NORMAL_BLOCK, lpszFileName, nLine);
}
inline void operator delete(void *p)
{
 _free_dbg(p, _NORMAL_BLOCK);
}
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
#endif

main()の最初に以下のコードを追加。

#ifdef _DEBUG
 _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF | _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG));
#endif

このようにすることで、プログラムの終了時、もしメモリリークがあった場合デバッガのアウトプットウインドウにそれが表示されるようになります。




/var/www/html/virtual/cppcli/data/pages/実用編/ヒープのメモリリーク診断.txt · 最終更新: 2013/12/23 09:08 (外部編集)