Zum Inhalt springen

Delphi: Muss ein Image im Array mit free freigegeben werden?


Empfohlene Beiträge

Geschrieben

Hallo,

ich erstelle in einem Array für TImages wärend des Programmablaufs mehrere Images. Werden diese Images nicht mehr gebraucht, dann muss man sie ja bekanntlicherweise mit free wieder freigeben, weil sonst Arbeitsspeicher verbraucht wird.

Mit dem Befehl

SetLength(Dyn_Image, 0); kann man die Anzahl der Images im Array wieder auf 0 setzen.

Muss man die Images vorher trotzdem mit free freigeben?

Was in der Delphi Hilfe steht ist mir nicht ganz eindeutig klar :

Bei einer langen String- oder einer dynamischen Array-Variable weist SetLength dem mit S referenzierten String oder Array die angegebene Länge zu. Dabei bleiben die Zeichen im String oder die Elemente im Array erhalten, jedoch ist der Inhalt des neu zugewiesenen Speicherbereichs nicht definiert. Ist nicht genug Speicher für die Variable vorhanden, wird eine EOutOfMemory-Exception ausgelöst. Nach dem Aufruf von SetLength ist sichergestellt, daß S auf einen eindeutigen String oder ein eindeutiges Array zeigt (d. h. dessen Referenzzähler den Wert Eins hat).

Geschrieben
Original geschrieben von Chrischn2

Muss man die Images vorher trotzdem mit free freigeben?

Was in der Delphi Hilfe steht ist mir nicht ganz eindeutig klar :

Ja, im Arrray stehen ja nur Zeiger auf den Speicherbereich in dem das TImage Objekt abgelegt ist. Diese Pointer werden dadurch zwar nicht mehr zugänglich gemacht, der Speicher der hintendranhängt bleibt aber unverändert.

Also erst eine Schleife über das dyn. Array und alles freigeben, dann (u.U.) die Länge auf 0 setzen.

Geschrieben

Als Grundregel kann man eigentlich immer nehmen:

Alles was du erzeugst, musst du auch wieder freigeben!

Natürlich gibt es da auch Ausnahmen (über die Owner Property), aber sicherer und besser ist es das selber zu machen (auch mit Owner). Die paar Zeilen machen dann auch nix mehr ;):D

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...