Hallo himitsu,
OK das mit dem Array war jetzt ein doofes Besipiel, wollte ja nur den aktuell benutzen Speicherbedarf ausgeben.
Nehmen wir das folgende Beispiel:
Ich habe zwei Buttons.
Mit Button3 erzeuge ich ein BMP.
Mit Button4 kille ich es wieder.
Drücke ich aber zwei oder noch mehr mal auf Button3, dann habe ich Bitmap-Leichen erzeugt, an die ich nicht mehr rannkomme.
Das kann man dann schön an der Anzeige 'Aktueller Speicherbedarf' sehen.
Ich komme dann nicht mehr auf den Speicher-Wert, den das Programm beim Starten hatte.
Gruß
Frank
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
Tint_vektor=array
of integer;
Tint_matrix=array
of Tint_vektor;
TForm1 =
class(TForm)
Timer1: TTimer;
StatusBar1: TStatusBar;
Button3: TButton;
Button4: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private-Deklarationen }
public
bmp:tbitmap;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// Speicher-Bedarf-Abfrage
procedure TForm1.Timer1Timer(Sender: TObject);
var Speicherinfo:THeapStatus;
begin
// Aktuellen Speicherbedarf ausgeben
speicherinfo:=GetHeapStatus;
statusbar1.Panels[0].Text:=
'
Aktueller Speicherbedarf='+
inttostr(speicherinfo.TotalAllocated)+
'
Byte';
end;
// Bitmap erzeugen
procedure TForm1.Button3Click(Sender: TObject);
begin
bmp:=tbitmap.Create;
end;
// Bitmap killen
procedure TForm1.Button4Click(Sender: TObject);
begin
if bmp<>
nil
then
begin
bmp.Free;
bmp:=nil;
end;
end;
end.