Thema: Delphi Einstieg in die OOP

Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: Einstieg in die OOP

  Alt 2. Feb 2005, 19:37
Eigendlich gilt neue Frage, neuer Thread und eine Frage pro Thread, aber ichb will mal so frei sein ...

Zitat von sveno2k5:
Ist "ein Objekt aus dem Speicher löschen" gleichbedeutend mit "Die Objektreferenz auf nil setzen"?
Nein. Der Objektzeiger ist ein Pointer (4 Bytes), das Objekt ist überallhin zerstreut.
Wenn du den Zeiger auf nil stzt, zeigt der Zeiger halt nirgendwohin, aber die Daten sind noch da.

Zitat:
Wenn ja, warum löscht man die Objektreferenz nicht einfach?
Wenn du das objekt an sich löschst, zeigt der Zeiger immernoch dorthin, es ist nur nichts (sinnvolles) mehr da.

Zitat:
Warum ist es nötig Objekte aus dem Speicher zu löschen? Sie nehmen ja nicht Unmengen an Ressourcen ein.
Wenn das alle machen würden, könntest du alle paar Stunden dein System rebooten. Wenn du Objekte erstellst (Speicher reservierst) und ihn danach nicht mehr freigibst, steht der Speicher nicht mehr zur Verfügung. Irgendwann ist der ganze RAM reserviert ...

Zitat:
Warum funktioniert destroy nicht wenn die Referenz nil ist?
Wo ist denn das Objekt, dass du löschen möchtest ?

Zitat:
Was macht free wenn die Referenz nil ist?
Nichts.

Zitat:
Auch hier wieder, warum löscht man den Zeiger nicht einfach (Der Zeiger ist doch die Objektreferenz oder?
Weil dann der Speicher immernoch reserviert ist.

Wenn du ein Objekt nichtmehr brauchst, nehme am besten immer FreeAndNil() ...
  Mit Zitat antworten Zitat