SetLength() legt keine Reserven für zukünftige Erweiterungen an. Wegen der Funktion der Speicherverwaltung gibt es eine "Reserve" vom Ende des Arrays bis zum Ende des reservierten Speicherblocks. Zu dem Thema gab es im Forum schon einmal eine detaillierte Diskussion. Wenn du eine Reserve haben möchstest, musst du diese selber einplanen oder eine Listen-Klasse verwenden (sämtliche Listenklassen allokieren eine Reserve bzw. man kann diese sogar manuell setzen).mschnell hat geschrieben:Ich hätte (aus Performance-Gründen) vermutet, SetLength macht nur irgendetwas, wenn die ursprüngliche Länge kleiner ist (und setzt dann die allokierte Größe vorsichtshalber deutlich größer, z.B. auf die nächste Zweierpotenz) oder wenn die neue Größe wesentlich kleiner ist. Bessere Performance, aber keine Garantie für Refcount = 1. l
Dynamische Array / Was passiert hier ?
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Dynamische Array / Was passiert hier ?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein