![]() |
FreeAndNil vs TObject.free
Hi Leute,
mal ne grundsätzliche Frage : Wenn ich mir den Quellcode von der Procedure FreeAndNil anschaue, macht diese ja nicht anderes als das Free des Objects aufzurufen und dann den Zeiger auf nil zu setzen. Wann ist das sinnvoll ? Gruß Data |
Re: FreeAndNil vs TObject.free
Hallo,
Es ist dann sinnvoll, wenn du ein Objekt freigeben und den Zeiger auf nil setzen willst. Es spart einfach eine Zeile bzw vergisst man das nil-setzen nicht. grüße, daniel |
Re: FreeAndNil vs TObject.free
Hi,
das habe ich mir auch schon gedacht :mrgreen: nächste Frage : Macht folgender Source Sinn ? :
Code:
Bzw. wann macht es Sinn, eine Variable auf Nil zu setzen, außer zu zu vergleichszwecken ?
procedure SinnOderSinnlos;
Var strL : TStringList; begin strL := TSTringList.create; try strL.Add('Bla'); // ..... weitere verarbeitungen mit der Stringliste finally FreeAndNil(strL); // oder strL.free end; end; Gruß Data |
Re: FreeAndNil vs TObject.free
Ich würde sagen, dass es nur bei Zeigern die später noch verfügbar sind Sinn macht. Also bei Klassenobjekten und globalen Objekten (wenn sie sich nicht vermeiden lassen).
Bei lokalen Objekten eher weniger |
Re: FreeAndNil vs TObject.free
Du hast Recht, die Variable zusätzlich noch auf nil zu setzen, macht nur Sinn, wenn du danach prüfen willst, ob das Objekt besteht oder nicht. Ansonsten sind es ein paar verschwendete Takte ;-).
|
Re: FreeAndNil vs TObject.free
Hi,
innerhalb einer kleinen Prozedure dürfte der Sinn begrenzt sein wenn es aber eine private Variable der Form ist und du an unterschiedlichen Programmstellen auf Initialisierung der Variable testest steigt der Sinn erheblich.
Delphi-Quellcode:
Grüße
if Var = nil then
Var := Ini(); Frank |
Re: FreeAndNil vs TObject.free
Ok, so habe ich das bis jetzt auch immer behandelt !
Wenn irgentwo anders die Var geprüft wird dann auf nil setzen, ansonsten Free verwenden. Habe nur neulich eins meiner Progs mit memproof getestet und da merkert er das(nicht auf nil setzen) an, deshalb meine Frage ! Danke Data |
Re: FreeAndNil vs TObject.free
@Sanchez
geht man in Österreich schon mit 42 in Pension? Da muss ich ja noch schnell Umsiedeln 8) |
Re: FreeAndNil vs TObject.free
Hallo DataCool,
dieses Thema wurde auch ![]() Ich vertrete generell die Meinung, dass Referenzen/Pointer entweder gültig oder nil sein sollten. Der "hässliche Zwischenzustand" birgt nur in wenigen Ausnahmefällen Vorteile, führt aber auf der anderen Seite zu häufig zu Problemen und ist im Design von Sprachen wie Smalltalk, Java oder C# vermieden worden :) |
Re: FreeAndNil vs TObject.free
Ich habe mir angewöhnt FreeAndNil zunehmen, auch wenn ich den zeiger nachher nicht auf nilk testen will. einfach aus dem Grund um es mir anzugewöhnen, damit für den fall, dass ich es mal brauche es automatisch mache.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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