Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

Re: Objekte (Klassen) freigeben notwendig?

  Alt 22. Jun 2006, 17:03
Zitat von Alfonso:
Hallo,

muss ich eine Klasse freigeben
Nein, kannst Du gar nicht :-p

Sorry, bin grad etwas im Klugscheissmodus, aber Klassen kann man gar nicht freigeben, weil sie ja 'nur' der Bauplan für konkrete Instanzen, also die Objekte sind.

Um die Frage richtig zu interpretieren:
Ja, Du musst ein Objekt welches Du in einer Methode instanziert hast auch wieder freigeben.

Lokale Variablen wie strings, Ganz- oder Fließkommazahlen werden von Delphi selber erzeugt und wieder freigegeben, aber Variablen die Objekte beherbergen sind für Delphi nur Zeiger. Der Speicherplatz für den Zeiger wird zwar erzeugt und auch automatisch freigeräumt, nicht jedoch der Speicher, auf den dieser Zeiger zeigt.

Will heissen wenn Du ein Objekt erzeugst und einer lokalen Variablen zuweist, so reservierst Du den Speicher und nach dem beenden wird der Zeiger auf diesen Speicher weggeworfen, Du hast also Speicher angefordert, bekommst aber hinterher nie mehr heraus, wo denn dieser Speicher liegt um ihn zurückzugeben. Das nennt sich Speicherleck und sollte idealerweise vermieden werden.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat