Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: SetLength -> Zu wenig Arbeitsspeicher?

  Alt 11. Aug 2010, 12:56
PS: Speicherdefragmentierung gibt's auch noch.

du hast z.B.
- maximal 2 GB virtuellen Speicher verfügbar
- gnügend physischen RAM + Auslagerungsdatei
- aber einen voll defragmentierten virtuellen Speicher (es liegen da ja auch noch über DLLs und so'n Zugs rum)

Wird ein dyn. Array in seiner größe geändert, dann wird/muß eventuell das Array umkopoert werden, weil es nicht Inplace vergrößert werden kann (liegt schon was Anderes dahinter).

Nun brauchst du also:
a) irgendwo ein Stückchen freien Speicher, wo die neuen Arraydaten reinpassen
b) zwischenzeitlich auch mal bis zu doppelt soviel Speicher für das Array (neuer + alte Daten)


[add]
ich sage standardmäßig.

Und es sind etwa 3,75 GB an virtuellen RAM, den Rest kann man mit 32 Bit nicht verwalten und eingige Bereiche wurden wohl aus Kompatibilitätsgründen (zur 31-Bit-signed-Adressierung) gesperrt.

Mein Windows 32 Bit stellt z.B. nur 3,24 zur Verfügung (Integergrenzen und so) und der Rest wird entweder für Treiber werwendet und alles über 4 GB ist eh nicht adressierbar (abgesehn vom LAA / Large-Address-Aware, aber das muß aktiviert sein, das OS muß es unterstützen und deine Anwendung müßte es selbst behandeln)
$2B or not $2B

Geändert von himitsu (11. Aug 2010 um 13:07 Uhr)
  Mit Zitat antworten Zitat