Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi dynamische Array freigeben (https://www.delphipraxis.net/8156-dynamische-array-freigeben.html)

theomega 29. Aug 2003 14:37


dynamische Array freigeben
 
Hallo Leute
ich nute ein Dynamisches array via
Code:
var ar: array of string
begin;
setlength(ar,5);
ar[1] := 'eins';
.
.
.
nach all den Operationen muß ich doch wenn ich fertig bin, das Array wieder freigeben oder? Das macht Delphi nicht selber? Und wie geht das denn?

danke und Grüße
TO

axelf98 29. Aug 2003 14:41

Re: dynamische Array freigeben
 
Zitat:

Zitat von theomega
Array wieder freigeben oder?

Hmm, du hast ja auch keinen Create-Befehl, nur die setlength-Prozedur.
Ich würde sagen, dass
Delphi-Quellcode:
setlength(Array1,0);
reicht, weil dann keine Variablen mehr drin sind und auch kein Speicher mehr dafür reserviert wird.

Tpercon 29. Aug 2003 15:09

Re: dynamische Array freigeben
 
Einfach, wie axelf98 geschrieben hat, SetLength mit der Größe 0 aufrufen, wobei man das nicht wirklich muß.

Minz 30. Aug 2003 12:02

Re: dynamische Array freigeben
 
Selbst wenn die Länge des Array 0 ist, heißt das nicht, das kein Speicher mehr verbraucht wird. Auch wenn es sich nur um 8 Byte oder so handelt, die für die Bereitstellung des dyn. Arrays draufgehen, oder irre ich mich da?

Wie man es richtig freigibt würde ich allerdings auch gerne wissen.
Variablen allerding gibt man ja auch net frei, oder?

Grüße Minz

Christian Seehase 30. Aug 2003 12:30

Re: dynamische Array freigeben
 
Moin The Omega,

ich schlage mal vor, dass Du Dir auch (noch) mal den Eintrag "Dynamische Arrays" in der Hilfe anschaust.
Enthält Dein dynamisches Array beispielsweise Objekte, so darfst Du nicht vergessen, diese freizugeben, bevor Du das Array löschst bzw. die Grösse verringerst.

theomega 30. Aug 2003 12:40

Re: dynamische Array freigeben
 
Es enthält wie oben angegeben aber nur Sttrings!

urs.liska 30. Aug 2003 12:52

Re: dynamische Array freigeben
 
wenn das Array nur einfache Datentypen enthält (wie z.B. Strings), reicht es, die Länge auf 0 zu setzen.
Wenn die Variable aus dem Gültigkeitsbereich gerät, wird sie auch komplett freigegeben.
Wenn Du sie in einer Methode deklarierst, ist die variable nach Verlassen der Methode komplett 'weg'.
Wenn die Variable global oder Feld eines Objektes ist, besteht sie natürlich weiterhin, aber dann macht es ja nichts.

Grüße
Urs

Christian Seehase 30. Aug 2003 13:57

Re: dynamische Array freigeben
 
Moin Zusammen,

Zitat:

Zitat von Delphi-Hilfe: 'Dynamische Arrays:'
Um ein dynamisches Array freizugeben, weisen Sie einer Variablen, die das Array referenziert, den Wert nil zu, oder Sie übergeben die Variable an Finalize.



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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-2025 by Thomas Breitkreuz