DLLのメモリリーク

解決


のし  2007-09-10 04:39:38  No: 66261

-環境-
  MS .net 2002
  C++
  windows2000 および XP

常駐PGMから、特定のタイミングでDLLが呼ばれるプログラムがあります。
このDLL内では特に、malloc等の動的なメモリの確保は行っていないのにも
関わらず、コミットチャージ(仮想メモリ)の使用量が増える現象が発生しています。(24Hで呼び出しは1万回ほど行われ、200Mほど仮想メモリが増えます。)
※DLLから特定のPGM(exe)を呼び出し、呼び出しログを作成しているPGMです。

DLLの作り方などで、この様な現象が発生することはありえるのでしょうか?
(タスクマネージャで上位の常駐プロセスのメモリは増えていません。)
また、DLL内でメモリリークを起こしているとすればどのような調べ方が
あるでしょうか?

ご回答のほどよろしくお願いします。


へろり  2007-09-10 18:40:40  No: 66262

そのDLLの中でCreateThread()を使ってはいませんか。

CreateThread()で生成されたスレッド内でCランタイムを使用すると
スレッド終了時にリークします。


のし  2007-09-11 01:11:58  No: 66263

自己解決致しました。

原因はexeの呼び出しに問題があったようです、_popenのバグのようで
ライブラリ関数自体がメモリリークを発生させていたようです。

へろりさん、アドバイスありがとうございました。


ブイ  2007-09-11 02:40:03  No: 66264

本当にバグですか?使い方を間違っただけではないですか?
本当にバグなら詳細を書いておけば他の人の役に立ちます。お礼にそれぐらいしていきましょう。
バグじゃないなら、(返答を貰ったのに)こういう場所で嘘を書くのは不誠実です。


isshi  2007-09-11 02:48:06  No: 66265

これですか?
http://support.microsoft.com/kb/897308/ja?spid=2989&sid=86


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加