VC++でメモリリークチェックツールはいくつかありますが私的に手放せない一品をご紹介。
Visual Leak Detectorです。インストールはOk連打でOk↓
途中Visual Studioとの連携を取るか確認されますのでもちろんチェックしておきます。
使い方は至極簡単。どこかのcppファイル内で#include vld.h”を足すだけ。
Test.cpp
#include "stdafx.h" #include "vld.h" int _tmain(int argc, _TCHAR* argv[]) { int* p = new int[256]; return 0; }
デバッグモードのみ自動的にライブラリがリンクされ、プログラム終了後出力ウィンドウに下のような出力がでます。
< 出力ウィンドウ>
Visual Leak Detector Version 2.4RC2 installed. WARNING: Visual Leak Detector detected memory leaks! ---------- Block 1 at 0x006A31A0: 1024 bytes ---------- Leak Hash: 0x2741707D, Count: 1, Total 1024 bytes Call Stack (TID 6308): 0x0F27C260 (File and line number not available): MSVCR120D.dll!operator new c:\work\memoryleakchecksample\memoryleakchecksample\memoryleakchecksample.cpp (9): MemoryLeakCheckSample.exe!wmain + 0xA bytes f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c (623): MemoryLeakCheckSample.exe!__tmainCRTStartup + 0x19 bytes f:\dd\vctools\crt\crtw32\dllstuff\crtexe.c (466): MemoryLeakCheckSample.exe!wmainCRTStartup 0x7708338A (File and line number not available): kernel32.dll!BaseThreadInitThunk + 0x12 bytes 0x77979F72 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x63 bytes 0x77979F45 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x36 bytes Data: CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD ........ ........ Visual Leak Detector detected 1 memory leak (1060 bytes). Largest number used: 1060 bytes. Total allocations: 1060 bytes. Visual Leak Detector is now exiting. プログラム '[6304] MemoryLeakCheckSample.exe' はコード 0 (0x0) で終了しました。
素晴らしい、そして美しい。