«

»

3月
06

[c++]VisualC++のcrtdbg.hに相当するメモリリーク検知方法について

VisualC++で重宝したcrtdbg.h。Xcodeでは…?

メモリ リーク検出の有効化 http://msdn.microsoft.com/ja-jp/library/e5ewb1h3(v=vs.90).aspx

これはデバッグ終了時にメモリリークが検出された場合、コンソールに発生箇所などが表示されるもので大変便利なのですが、Xcodeではどうやらそれに相当するものはない模様。

そしていつものようにStackOverflowなどを探っていたらクロスプラットフォーム版crtdbg.hと言えそうなソースコードが見つかりました。これはかなりそれっぽい。というかVC以外で開発される方はどうされるのが一般的なんでしょう??

A Cross-Platform Memory Leak Detector http://wyw.dcweb.cn/leakage.htm

既存のオブジェクトをこれのdebug_newとリンクしてしまえば(XcodeなどIDEならば次のファイルをプロジェクトに追加すれば)それだけで一応機能します。

debug_new.h
debug_new.cpp
c+11.h
_nvwa.h
fast_mutex.h
static_assert.h

ただし行番号まで表示させる場合は、明示的に debug_new.h をインクルードさせる必要があるようです。

注意点は、検知のタイミングによっては正常に開放されているものもリークとして表示されてしまう場合があるので工夫が必要と思われます。

追記:これだとC実装部分は検知できない。ということで Valgrind が気になる。でも最近のOSXだと無理っぽいですね。

コメントを残す

メールアドレスは公開されません

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>