::Hikaru's blog

調べたこと, 考えたことをメモ.
<< August 2017 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

スポンサーサイト

一定期間更新がないため広告を表示しています

- | permalink | - | -
<< mallocとfreeはモジュールを越えてはいけないのか | main | Template template parameter >>

CRTのメモリリークのチェック機能

crtdbg.hをインクルードするとmallocとfreeが_malloc_dbgと_free_dbgに置き換わり、CRTのヒープの状況を監視する。
_CrtDumpMemoryLeaksを呼び出せば、ヒープ内の開放されていないオブジェクトすべてをダンプできる。
また、CrtSetDbgFlagで_CRTDBG_LEAK_CHECK_DFを指定するとプログラム終了時に自動的にCrtDumpMemoryLeaksを呼び出してくれる。

#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>

int flag = ::_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
::_CrtSetDbgFlag(flag | _CRTDBG_LEAK_CHECK_DF);

出力例:
> Detected memory leaks!
> Dumping objects ->
> {56} normal block at 0x003A58A0, 1 bytes long.
> Data: < > CD
> Object dump complete.

_CrtSetBreakAlloc(56);
としておけば、newしている箇所でブレイクさせることができる。

メモリ リークの検出と特定
C, C++ | permalink | comments(2) | trackbacks(0)

スポンサーサイト

- | permalink | - | -

この記事に対するコメント

同じような内容の記事をはるか昔に自分のblogに書こうとして、書きかけでそのままお蔵入りになってたのを思い出したw
akihiro | 2006/11/20 3:03 PM
しっかり更新しろよ(笑)
hikaru | 2006/11/21 1:10 PM
コメントする









この記事のトラックバックURL
http://hikarukaru.jugem.cc/trackback/93
この記事に対するトラックバック