-環境-
MS .net 2002
C++
windows2000 および XP
常駐PGMから、特定のタイミングでDLLが呼ばれるプログラムがあります。
このDLL内では特に、malloc等の動的なメモリの確保は行っていないのにも
関わらず、コミットチャージ(仮想メモリ)の使用量が増える現象が発生しています。(24Hで呼び出しは1万回ほど行われ、200Mほど仮想メモリが増えます。)
※DLLから特定のPGM(exe)を呼び出し、呼び出しログを作成しているPGMです。
DLLの作り方などで、この様な現象が発生することはありえるのでしょうか?
(タスクマネージャで上位の常駐プロセスのメモリは増えていません。)
また、DLL内でメモリリークを起こしているとすればどのような調べ方が
あるでしょうか?
ご回答のほどよろしくお願いします。
そのDLLの中でCreateThread()を使ってはいませんか。
CreateThread()で生成されたスレッド内でCランタイムを使用すると
スレッド終了時にリークします。
自己解決致しました。
原因はexeの呼び出しに問題があったようです、_popenのバグのようで
ライブラリ関数自体がメモリリークを発生させていたようです。
へろりさん、アドバイスありがとうございました。
本当にバグですか?使い方を間違っただけではないですか?
本当にバグなら詳細を書いておけば他の人の役に立ちます。お礼にそれぐらいしていきましょう。
バグじゃないなら、(返答を貰ったのに)こういう場所で嘘を書くのは不誠実です。
これですか?
http://support.microsoft.com/kb/897308/ja?spid=2989&sid=86
ツイート | ![]() |