メモリリークが出ます!

[戻る]
麦わら帽子 2002/11/06(水) 13:53:10
プログラムを実行しているときは全然問題ないのですが
終了すると10個ぐらい下のようなメッセージが下の窓に出ます。
タスクマネージャーで見る限りではメモリの使用量はほとんど増えていません。
なにが原因かこのメッセージだけで分かるものなのでしょうか?
お願いします。

WINXP/VC++6.0/MFC

Detected memory leaks!
Dumping objects ->
{68195} normal block at 0x003F8778, 160 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

ぷにーん 2002/11/06(水) 14:04:42
メモリーリークって原因としてメモリーが解放されていない時に発生するはずですが、
どうでしょう?
解放していないメモリーはありませんか?

それと、デバックのメッセージだけではわからない・・・と思います。

麦わら帽子 2002/11/06(水) 14:10:51
1つの関数を呼び出して閉じると
この事象が発生することが分かりました。

関数の中はメーカーのAPI関数だけで作られており
その中で悪さをしているって事なのかも知れません。

先ほどメッセージがたくさん出てくるといったのは、その関数を呼び出した
回数分だけメッセージが出てくるようなのです。

でも、思ったんですけど。
1つの関数内でローカルに宣言された変数って
関数が終了した時点で自動的に開放されるんですよね?
だとしたらAPI関数の中でメモリが変な使い方されてても開放されるはずですよね?
どういうことなんでしょうか・・・

tib 2002/11/06(水) 14:13:33
関数内の自動変数ならその関数を抜けたときに解放されますが、malloc()やnewなどで動
的確保されたメモリは明示的に解放してあげなくてはなりません。

麦わら帽子 2002/11/06(水) 14:21:50
[[解決]]
ごめんなさい!
大きな動的配列を宣言していました。
デリートすることで解決しました。

ありがとうございます!

DWORD *buf;
buf = (PULONG) new ULONG[ 10 * sizeof(ULONG)];

delete(buf);

古いスレッドには追加発言できません。