Die Einwände wären lediglich das du wohl nicht weiß warum das so ok ist. Ansonsten ist es ok
folgendes ist dein Ausgangspost:
Delphi-Quellcode:
var
bmp : TBitmap;
begin
bmp := TBitmap.Create; //1
bmp := Image1.Picture.Bitmap; //2
(snip)
bmp.free; //3
end;
zu beachten ist aber das Image1.Picture.
Bitmap von Image1 (TImage) bereits erstellt (TBitmap.Create()) wurde.
genau genommen machst du im Ausgangspost folgendes:
1.) Du forderst Speicher an und weißt merkst dir die Adresse darauf in der Variablen "bmp"
2.) Du lässt die Variable "bmp" jetzt auf Image1.Picture.Bitmap zeigen. Jetzt zeigt aber nichts mehr auf den zuvor angeforderten Speicher der mit "TBitmap.Create" angefordert wurde. Dadurch kannst du den Speicher nicht mehr frei geben und hast ein Speicherleck
3.) Du gibst den Speicher frei welchen Image1 (TImage) angefordert hat. Du solltest aber generell nur Dinge frei geben die du auch selbst angefordert hast. Das hattest du sicher auch vor was aber durch
bmp := Image1.Picture.Bitmap;
in die Hose geht.