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だと無理っぽいですね。
コメントを残す