皆様こんばんは。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;
> BMP:= Stretch(BMP,100,100);//元画像を100×100に縮小
思いっきり解放が漏れていますが・・・
かみづさんご指摘ありがとうございます。
全くもってその通りですねorz
そしてお騒がせして申し訳ありませんでした。
ツイート | ![]() |