(Moderator)
Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
Delphi 2006 Professional
|
Re: Oject neu instanzieren ohne vorher zu deinstanzieren
6. Mai 2005, 15:34
ganz eindeutig ein speicher leck.
das wäre das gleich wie
TIrgendwas.Create;
also das man die instanz gar keiner varialben zu weist. Damit wird zwar die instanz erstellt, somit auch speicher dafür reserviert aber die instanz wird nie verwendet weil man sich nicht sicher an welcher stelle im speicher die instanz gelandet ist.
Wenn du also einfach neu instanzierst schmeist du den Merker der speicheradresse von dem bereits instanzierten object weg. Somit weißt du natürlich auch nicht mehr wo was freigegeben werden muss und es ist ein speicherleck entstanden.
Um jetzt irgendwelche unsinnigen Diskusionen zu vermeiden:
- Ja ich weiß das ein Object sich auch selbst freigeben kann (also kein pointer auf die instanz benötigt wird)
- Ja ich weiß auch das man bei obigen kleinen Beispielcode ein "with" drum herum schreiben kann um somit auf die instanz zu zugreifen....
Jens Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
|