処理後その都度メモリを解放するには?

解決


totonica  2006-08-15 08:03:34  No: 22905

皆様こんばんは。totonicaと申します。
過去ログにも似たような話題があって恐縮ですが、
DHGL1.2のBigBitmapクラスとStretch関数を用いて
大量の画像の拡大縮小を行っているのですが、
ちゃんとFreeしてるにもかかわらず、
1つ画像を処理するごとにメモリが解放されず使用量がどんどん増加していき、
次第に容量不足に陥ってしまいます。
(プログラムを終了すると空き容量が元に戻ります)
どうすればその都度メモリが解放されるようになるのでしょうか。
どなたかご教授下さい。
開発環境はXP Pro SP2+Del7 Pro、
元の画像は2950×2094のビットマップです。

以下の処理は検証用の物で、
ボタンクリックすることで100×100の縮小画像を作るものです。
何度もボタンを押していくと
メモリ使用量がどんどん上がっていってしまいます。
(やはりプログラムの終了で空き容量が元に戻ります)

procedure TForm1.Button1Click(Sender: TObject);
var
  BMP: TBigBitmap;
begin
  Inc(Index);//Integer型のグローバル変数
  BMP:= TBigBitmap.Create;
  try
    begin
      BMP.LoadFromFile(ExtractFilePath(Application.ExeName)+'test.bmp');//2950×2094の元画像ビットマップの読み込み
      BMP:= Stretch(BMP,100,100);//元画像を100×100に縮小
      BMP.SaveToFile(ExtractFilePath(Application.ExeName)+IntToStr(Index)+'.bmp');
    end;
  finally
    BMP.Free;
  end;
end;


かみづ  2006-08-15 09:14:25  No: 22906

>      BMP:= Stretch(BMP,100,100);//元画像を100×100に縮小

思いっきり解放が漏れていますが・・・


totonica  2006-08-15 09:50:05  No: 22907

かみづさんご指摘ありがとうございます。
全くもってその通りですねorz
そしてお騒がせして申し訳ありませんでした。


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

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






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