Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#10

Re: Dispose: Pointer oder Object?

  Alt 3. Feb 2009, 13:27
nach dem Freigeben von Speicher sollte man eh nicht mehr versuchen darauf zuzugreifen.

Nur weil mit Dispose (oder sonstwas) spehcer freigegeben wurde, kann ers sein, daß dieser dennoch vom Speichermanager reserviert ist (schlimmstenfalls wird dieser Speicher sogar inzwischen für was Anderes verwendet)

bei Dispose werden die Strings freigegeben, wobei der interne Stringzeiger nun auf NIL steht ... drum zeigt das Zweite nichts mehr an, wärend (wie schon gesagt) Dispose ohne Typeninformationen die Strings nicht freigibt und auch nicht den Record nullt ... drum kannst du beim Ersten noch alles auslesen (das erwähnte Speicherleck)

PS: wenn der Speichermanager den ganzen Speicherbereich freigegeben hätte, dann hättest du bei beiden Varianten eine Zugriffsverletzung geerntet.
(der Speichermanager reserviert große Speicherbereiche und gibt diesen in kleineren Portionen weiter ... ist optimaler so)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat