VC++ OS,XP
以下のようなメッセージがでるのですが、どういう意味かご存知のかたいらっしゃいま
すでしょうか?
Detected memory leaks!
Dumping objects ->
{425} normal block at 0x00376818, 768 bytes long.
Data: < > 00 00 00 80 00 00 00 80 00 80 80 00 00 00 80 80
{424} normal block at 0x00376470, 861 bytes long.
Data: <GIF89a$ > 47 49 46 38 39 61 24 00 22 00 F7 00 00 00 00 00
Object dump complete.
そろそろ質問する前に類似の質問がないかどうか調べてください。
上達の近道です。
で、↓これは類似の質問ではないけど参考になると思います。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200802/08020033.txt
Detected memory leaks!
…まんまやん。
うろ覚えなので合っていないかもしれんが
425番目、アドレス0x00376818、768バイト、その内容の一部
424番目、アドレス0x00376470、861バイト、その内容の一部
の2件が、newしてdeleteし忘れとか、mallocしてfreeし忘れとかだろう。
2めは内容からしてGIFのデータだな。
newがデバック用のものにマクロ定義で変えてあれば
そのnewをした時のソースファイル名と行も表示されるんだけどね。
たいちろうさん、aさん、wclrp ( 'o')さん、レスポンスありがとうございます。
たいちろうさんの過去レスから、非常に有用だと思われますのでもう一度。
wclrp ( 'o')さんのいってくださった、デバッグ用マクロ定義について調べてみます。
「Detected memory leaks!
Dumping objects ->
{100} normal block at 0x00432AE0, 14 bytes long.
Data: <PIYOPIYO_DATA > 50 49 59 4F 50 49 59 4F 5F 44 41 54 41 00
Object dump complete.
この時に通知される「{100}」を_CrtSetBreakAllocに指定すると、
アロケート場所を知る(ブレークポイントに設定する)ことができます。
#include <crtdbg.h> // これが必要かも
BOOL CHogeDoc::OnNewDocument() // ダイアログベースならOnInitialDialogあたりか
な。
{
_CrtSetBreakAlloc(100); // 必要ならもっと早く記述。
※この数字100はアロケートの通番のようなので、前回と同じ操作を行う。」