Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Speicherplatz eines Arrays freigeben
Mari - Sa 08.02.03 12:24
Titel: Speicherplatz eines Arrays freigeben
Kann ich den Speicherplatz den ein Array belegt während das Programm läuft wieder freigeben wenn ich die Werte nicht mehr brauche? Es ist bestimmt nicht gerade geschwindigkeitsfördernd wenn sich während des gesamten Programablaufes ein Array mit 100.000 Real-Werten imSpeicher befindet, oder macht das nichts aus?
smiegel - Sa 08.02.03 15:16
Hallo,
wenn Du das Array dynamisch erzeugt hast, dann kannst Du auch den Speicher wieder freigeben.
Möglichkeit 1:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| type TMyArray=array of Double;
var DblArr:TMyArray;
... // array mit 100000 Werten initialisieren SetLength(DblArr, 100000); ... // array wieder freigeben SetLength(DblArr, 0); |
Möglichkeit 2:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| type PMyArray=^TMyArray; TMyArray=array[1..100000] of Double;
var DblArr:PMyArr;
... // array initialisieren New(DblArr); ... // Speicher wieder freigeben Dispose(DblArr); |
Mari - Sa 08.02.03 16:57
Und wenn das Array nicht dynamisch ist?
Delete - Sa 08.02.03 17:06
Siehe Möglichkeit 2.
Mari - Sa 08.02.03 17:26
Ich will euch ja nicht ärgern, aber bei meinem Array ist die erste Dimension dynamisch und die zweite und dritte nicht :wink:
smiegel - So 09.02.03 09:12
Hallo Mari,
ich verstehe Deine Frage nicht ganz, vermute aber einmal, Du meinst so oder so ähnlich?
Quelltext
1: 2: 3:
| type TStatischArr=array[1..10, 1..10] of Double; TDynArr=array of TStatischArr; |
Wenn dem so ist, siehe Möglichkeit 1.
Mari - So 09.02.03 18:01
Ich meine es so:
Quelltext
1:
| var x: Array of Aray[1..100,1..100] of double |
HeLe - Mo 17.02.03 16:31
einfach setlength(x,0)
Mari - Mo 17.02.03 18:23
Damit kann ich die erste Dimension löschen. Aber die zweite und dritte?
AndyB - Mo 17.02.03 18:26
Wird automatisch mit freigegeben (RTTI [Runtime Type Information] sei dank).
Mari - Mo 17.02.03 19:31
Das heißt also mit
werden alle drei Dimensionen wieder freigegeben?
AndyB - Mo 17.02.03 19:39
Ja.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!