Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
Delphi 12 Athens
|
AW: Arraygrösse und Stack Overflow
21. Feb 2024, 14:12
Ein statisches Array, als lokale Variable, liegt nunmal direkt auf dem Stack, so wie alle lokalen Variablen.
* ja, den Stack kann man vergrößern, aber 400 MB wäre sowieso nicht möglich
* also nein, besser ist es das Array eben nicht dort zu haben.
z.B. als dynamisches Array
oder als Pointer im Heap (sonstwo im virtuellen Programm-Speicher)
Dann ist es sowieso schwer, einen zusammenhängenden Block dieser Größe in einem 32 Bit-Programm reservieren zu wollen. (hast da standardmäßig nur 2 GB und das auch nicht relativ schön fragmentiert)
Erfahrungsgemäß geht es bis 700MB "meistens" noch gut, aber absichtlich provozieren würde ich das nicht wollen.
* Vielleicht also besser komplett anders herangehen.
Ist das Array überhaupt zum Großzeil mit Daten gefüllt? Wenn nicht, dann besser als Liste/Dictonary.
* oder als mehrdimensionals dynamisches array of array of array of integer
mit SetLength(x, 1001, 11, 10001);
.
Hier wären es dann 1001*11 Mal 10001*4 "kleine" Blöckchen im Speicher.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (21. Feb 2024 um 14:14 Uhr)
|