procedure TForm1.Button2Click(Sender: TObject);
begin
MessageDlg('テスト',mtConfirmation, [mbOK], 0);
close;
end;
Memcheck200を使用して、上記のプログラムのメモリリークを調べたら「11回メモリー開放し忘れています」と表示されました。
そんな複雑な処理をしていないのに11回とか言われても、なぜなのかよくわからず非常に困ってしまってます・・・。
MessageDlgを使用する場合、このメモリリークをなくすにはどうしたらいいのでしょうか?
誰か私を助けてください。
>「11回メモリー開放し忘れています」
本当のそれだけのコードなんでしょうか.
当方で確認したところ,メッセージは表示されませんでした.
Delphi5(UP1), 6(UP2),7とMemCheck Version2.70で確認しました.
WindowsXP(SP2)です.
MemCheckを新しいバージョンにしてみたらどうでしょう.
https://www.petitmonte.com/bbs/answers?question_id=2298
のスレッドにある一番下のレスにある
http://v.mahon.free.fr/pro/freeware/memcheck/
です.このスレッドを読む限り,メモリリークの解決になるかどうか
は保証できません.
私も同じ症状で悩んだことがあり、その原因は"MemCheck"をUnit1.pasのUses節に追加していることが原因でした。
MemCheckを、メイン関数(というのかな?)があるユニットの
USES節のトップに追加するとメモリリークがなくなると思います。
メインメニュー→プロジェクト→ユニットの表示を選択し、
プロジェクト名と同じユニットを選択するとメイン関数が表示されます。
そのUSES節に以下の記述があると思いますので、それを一番上(デフォルトならばFormsの上)に記述してください。
MemCheck in '{MemCheck200のある場所}\MemCheck.pas'
# 1年以上前の発言なので、ご覧になってないかも...
ツイート | ![]() |