メモリリークが出ます! – プログラミング – Home

メモリリークが出ます!
 
通知
すべてクリア

[解決済] メモリリークが出ます!


麦わら帽子
 麦わら帽子
(@麦わら帽子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

プログラムを実行しているときは全然問題ないのですが
終了すると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


引用未解決
トピックタグ
ぷにーん
 ぷにーん
(@ぷにーん)
ゲスト
結合: 23年前
投稿: 2
 

メモリーリークって原因としてメモリーが解放されていない時に発生するはずですが、
どうでしょう?
解放していないメモリーはありませんか?

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


返信引用
麦わら帽子
 麦わら帽子
(@麦わら帽子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

1つの関数を呼び出して閉じると
この事象が発生することが分かりました。

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

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

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


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

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


返信引用
麦わら帽子
 麦わら帽子
(@麦わら帽子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ごめんなさい!
大きな動的配列を宣言していました。
デリートすることで解決しました。

ありがとうございます!

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

delete(buf);


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました