MessageDlgでのメモリリークについて


えりこ  2005-04-13 04:28:56  No: 14283

procedure TForm1.Button2Click(Sender: TObject);
begin
 MessageDlg('テスト',mtConfirmation, [mbOK], 0);
 close;
end;

Memcheck200を使用して、上記のプログラムのメモリリークを調べたら「11回メモリー開放し忘れています」と表示されました。
そんな複雑な処理をしていないのに11回とか言われても、なぜなのかよくわからず非常に困ってしまってます・・・。
MessageDlgを使用する場合、このメモリリークをなくすにはどうしたらいいのでしょうか?
誰か私を助けてください。


Mr.XRAY  URL  2005-04-13 05:10:26  No: 14284

>「11回メモリー開放し忘れています」

本当のそれだけのコードなんでしょうか.
当方で確認したところ,メッセージは表示されませんでした.
Delphi5(UP1), 6(UP2),7とMemCheck Version2.70で確認しました.
WindowsXP(SP2)です.


Mr.XRAY  URL  2005-04-13 05:25:07  No: 14285

MemCheckを新しいバージョンにしてみたらどうでしょう.

https://www.petitmonte.com/bbs/answers?question_id=2298

のスレッドにある一番下のレスにある
http://v.mahon.free.fr/pro/freeware/memcheck/

です.このスレッドを読む限り,メモリリークの解決になるかどうか
は保証できません.


通りすがり  2006-07-03 09:09:06  No: 14286

私も同じ症状で悩んだことがあり、その原因は"MemCheck"をUnit1.pasのUses節に追加していることが原因でした。
MemCheckを、メイン関数(というのかな?)があるユニットの
USES節のトップに追加するとメモリリークがなくなると思います。

メインメニュー→プロジェクト→ユニットの表示を選択し、
プロジェクト名と同じユニットを選択するとメイン関数が表示されます。
そのUSES節に以下の記述があると思いますので、それを一番上(デフォルトならばFormsの上)に記述してください。
MemCheck in '{MemCheck200のある場所}\MemCheck.pas'

# 1年以上前の発言なので、ご覧になってないかも...


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

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






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