![]() |
Re: Objekte freigeben
... und die IF Abfrage ist dabei nur Zeitverschendung...
|
Re: Objekte freigeben
Bessere Absicherung gegen Memory Leaks erhält man mit try .. finally Blöcken:
Delphi-Quellcode:
Object1 := TMyFirstClass.Create;
try // use Object1 ... Object2 := TMySecondClass.Create; try // use Object2 ... Object3 := TMyThirdClass.Create; try // use Object3 ... finally FreeAndNil(Object3); end; finally FreeAndNil(Object2); end; finally FreeAndNil(Object1); end |
Re: Objekte freigeben
Zitat:
Zu dem Parameterproblem könntest du zwei Wege verwenden. Entweder FParameter von TMyBox ist eine "lokale" Kopie, oder TMyBox interessiert sich nicht um den Parameter sondern hat nur ein Zeiger drauf. Das heißt nichts zu Anfang erstellen und am Ende freigeben. Aber dann natürlich beim jedem Zugriff zuerst testen, ob der Zeiger valid ist. Ich würde dabei ersteres bevorzugen, wenn das nicht ZU viele Daten sind. MfG xZise |
Re: Objekte freigeben
Ich danke Euch allen (besonders shmia, sx2008 und xZise) für die nützlichen Hinweise.
Ich habe dabei einiges gelernt. |
Re: Objekte freigeben
Zitat:
|
Re: Objekte freigeben
Damit "das" übersichtlich bleibt und nicht zu viele Blöcke entstehen, besser so:
Code:
Bei der Freigabe von Objekten sollte eigentlich kein Fehler auftreten.
Object1 := nil;
Object2 := nil; Object3 := nil; try Object1 := TMyFirstClass.Create; // use Object1 ... Object2 := TMySecondClass.Create; // use Object2 ... Object3 := TMyThirdClass.Create; // use Object3 ... finally FreeAndNil(Object3); FreeAndNil(Object2); FreeAndNil(Object1); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz