物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

メモリリークしているソースコードの行を特定する

#include <cstdlib>
#include <new>
#include <memory>

#include <crtdbg.h>

#define _CRTDBG_MAP_ALLOC

#define new ::new(_NORMAL_BLOCK, __FILE__, __LINE__)

void main()
{
    int *i = new int;
    _CrtDumpMemoryLeaks();
    return;
}

これをデバックモードで実行すると

Detected memory leaks!
Dumping objects ->
c:\users\documents\source.cpp(13) : {170} normal block at 0x00000200AD5747B0, 4 bytes long.
 Data: <    > CD CD CD CD 
Object dump complete.

ちゃんとint *i = new int; である13行目でエラーが出ていることが分かる。

参照

プログラマーの友 第八報:メモリリークと crtdbg.h