Hallo mytar,
ich versuche mal vorsichtig, Deine Frage zu beantworten.
Also, wenn Du ein Objekt an ein anderes Objekt oder an
eine andere Klasse übergibst, dann geschieht dieses
durch Objekt1 = Objekt2, was eine Referenz darstellt
(Kopien von Objekten würde man mit der ASSIGN-Methode
des TPersistent realisieren).
Alle Objekte, die beim Start Deines Programms bereits verfügbar
sind (Buttons, Images, etc.) dürfen von Dir NICHT freigegeben
werden, da dies implizit ohnehin geschieht, wenn das Programm
beendet wird.
Alle Objekte, die Du selbst erstellst (TObject.create)
musst Du, anders als bei C++, wieder mit <Objekt>.Free freigeben.
Wenn Du Dir allerdings ein bestehendes TImage in Deine eigene Klasse
kopierst (also ohne externe Referenzen), dann musst Du dafür sorgen,
dass Du am Ende Deine Kopie des Objektes wieder selbs
freigibst (free).
War das in etwa die Antwort auf Deine Frage?