Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Arraygrösse und Stack Overflow

  Alt 21. Feb 2024, 13: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Feb 2024 um 13:14 Uhr)
  Mit Zitat antworten Zitat