Thema: Delphi Ram voll :-(

Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#8

Re: Ram voll :-(

  Alt 7. Jul 2008, 01:25
Zitat von Christian Seehase:
@littleDave:
Wenn man nil zuweist, wird intern, im Prinzip, ein FreeAndNil durchgeführt, also nur wenig mehr als .Free.
Beides gilt für D7 und D2006, wird also in D2005 auch so sein.
Das stimmt - intern wird auch nur .Free aufgerufen. Aber wenn man explizit := nil aufruft, weiß die Komponente, dass die Property .Picture gelöscht/resettet werden soll. Wenn man hingegen im Quelltext selber .Picture.Free aufruft, bekommt das die TImage-Komponente afaik nicht mit (vielleicht doch durch ein OnDestryEvent, weiß ich gerade nicht).
Beim direkten aufruf von .Free zeigt der Klassenpointer immer noch auf den alten Speicherbereich, was eigentlich zu einer Zugriffsverletzung führen sollte . Ich würd die := nil-Variante vorziehen, da dann der Rest von der TImage-Komponente erledigt wird (bzw. werden sollte).
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat