nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Alternative zu dynamischen Arrays

Von: Christian Bode (christianbode@arcor.de) [Profil]
Datum: 26.10.2009 11:44
Message-ID: <4ae57d8e$0$7629$9b4e6d93@newsspool1.arcor-online.net>
Newsgroup: de.comp.lang.delphi.misc
Hallo zusammen,

ich arbeite in meinen Klassen sehr viel mit dynamischen Arrays, vor
allem da sie sich einfach und leicht verwalten lassen. Dynamisch
bedeutet aber auch, das sie mal größer und kleiner werden können, je
nachdem wie viele Objekte vom jeweiligen Typ momentan benötigt werden.

Da ich während der Entwicklung viel an den Klassen ändere und damit
Delphi auch offenbar jedes Mal wieder einen neuen Speicherbereich
reservieren muss, ist es bei mir keine Seltenheit das die IDE mal ruck
zuck > 1GB Speicher beansprucht.
Wenn man Delphi dann minimiert, wird dieser Speicher übrigens
schlagartig wieder freigegeben.

In Hinblick auf die Entwicklung könnte ich das ja noch verkraften, aber
wenn mein Programm später nach und nach auch so viel Speicher für sich
reserviert, hätte ich schon ein Problem damit.
Wie ich gelesen habe, kann die verwendete Speichermenge bei der
Verwendung des SetLength(GetLength()+1)-Konstrukts ziemlich sprunghaft
ansteigen. Doch was wäre in Hinblick dessen eine vernünftige Alternative?
Klar man könnte ein Array zunächst auf fest Größe setzen und wenn die
nicht ausreicht, es weiter vergrößern. Doch wenn man nicht genau weiß,
wie stark sich das Array vergrößert kann man auch die Schritte schlecht
bestimmen und wenn man sie zu klein ansetzt, hat man den Effekt in
geringerer Form ja nach wie vor.
Außerdem finde ich es in dem Fall schwieriger über das Array zu
iterieren, da man nicht konkret weiß welche Bereiche nun tatsächlich
belegt sind. Man müsste also einen separaten Count mitführen.

Wie macht ihr das bei euch so?

Viele Grüße
Christian


[ Auf dieses Posting antworten ]

Antworten