Kleines Beispiel:
Delphi-Quellcode:
function MyFunc (AValue: String): TBitmap;
var
MyVar: Boolean;
begin
//Etwas machen
Result := TBitmap.Create;
Result.Machwas;
end;
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
var
TempBmp, Bmp1, Bmp2, Bmp3, Bmp4: TBitmap;
begin
Bmp1:= TBitmap.Create;
Bmp2:= TBitmap.Create;
Bmp1.LoadFromFile('C:\bild1.bmp');
Bmp2.LoadFromFile('C:\bild2.bmp');
TempBmp := MyFunc ('Ein Bitmap bitte');
Bmp3 := TempBmp; // Addresse zugewiesen - Bmp3 und TempBmp zeigen auf dasselbe Bitmap
Bmp4 := TBitmap.Create;
Bmp4.Assign (TempBmp); // Bitmap Kopiert
// Hier zeigen TempBmp und Bmp3 auf das zurückgegebene Bitmap und Bmp4 zeigt auf eine Kopie dessen.
TempBmp := MyFunc ('Ein anderes Bitmap bitte'); // Kein Leak, wel Addresse noch in Bmp3
// Bmp3 := nil; // Leak
FreeAndNil (Bmp3);
Ich hoffe, ich konnte dir helfen