Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi saubere Freigabe von (dynamischen) Arrays (https://www.delphipraxis.net/32531-saubere-freigabe-von-dynamischen-arrays.html)

sixarp 24. Okt 2004 20:07


saubere Freigabe von (dynamischen) Arrays
 
Wie gibt man eigentlich Arrays, im spezielle dyn. Arrays wieder frei?

nil setzen ist sicherlich nicht sauber, oder?

Ich würde mich für die sauberste Methode interessieren.
Wie siehts dabei mir dem Zeitaufwand aus?

Danke :P

Luckie 24. Okt 2004 20:30

Re: saubere Freigabe von (dynamischen) Arrays
 
Wenn sie lokal sind, werden sie sowieso nach der Beendigung der Routine wieder freigeben. Man könnte sie noch vorher auf die Länge 0 setzten.

sixarp 24. Okt 2004 20:40

Re: saubere Freigabe von (dynamischen) Arrays
 
Sonst gibt es keine Funktion?

:-D

jim_raynor 24. Okt 2004 20:41

Re: saubere Freigabe von (dynamischen) Arrays
 
Du kannst auch SetLength(Array,0) machen. Aber es läuft alles auf gleiche hinaus. Wichtig ist nur, dass Objekte dadrin nicht automatisch freigegeben werden.

sixarp 24. Okt 2004 20:45

Re: saubere Freigabe von (dynamischen) Arrays
 
Ich verstehe?

Dann hat also
Delphi-Quellcode:
myarray:=nil
setzen auch keinen sinn!

Sollte ich das also aus dem Code rausnehmen?

Danke

teebee 24. Okt 2004 20:49

Re: saubere Freigabe von (dynamischen) Arrays
 
Doch, ist in Ordnung.
Delphi-Quellcode:
Arr := Nil;
ist äquivalent zu
Delphi-Quellcode:
SetLength(Arr,0);
Gruß, teebee

sixarp 24. Okt 2004 20:52

Re: saubere Freigabe von (dynamischen) Arrays
 
Danke ! :-D

Chewie 24. Okt 2004 21:25

Re: saubere Freigabe von (dynamischen) Arrays
 
Zitat:

Zitat von teebee
Doch, ist in Ordnung.
Delphi-Quellcode:
Arr := Nil;
ist äquivalent zu
Delphi-Quellcode:
SetLength(Arr,0);
Gruß, teebee

Sie bewirken das gleiche, wobei die nil-Variante ein paar Takte schneller ist. Bei der Zuweisung an nil wird gleich DynArrayClear aufgerufen, bei der Variante mit SetLength wird erst DynArraySetLength aufgerufen, welches dann wiederum besagtes DynArrayClear aufruft.

Muetze1 24. Okt 2004 23:51

Re: saubere Freigabe von (dynamischen) Arrays
 
Moin!

Die Verwendung von Initialize() und Finalize() verhindert Speicherlecks...

MfG
Muetze1

Luckie 25. Okt 2004 00:05

Re: saubere Freigabe von (dynamischen) Arrays
 
Zitat:

Zitat von Muetze1
Die Verwendung von Initialize() und Finalize() verhindert Speicherlecks...

Wie soll man die konkret in so einem Fall einsetzen? Ich werde aus der Hilfe nicht so recht schlau. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz