Wie groß darf ein Feld sein ?
-
Hallo, hab ein 2D-Array
int Buffer[1024][1024];So, das gibt ein Programm Absturz aber wieso ? ich dachte Felder sind lediglich durch die Speicherkapazität beschränkt ?
Und ich dürfte mehr haben als 1024*1024*4 bytes ... etwa 4millionen ...
was ja nur 4 mb entspricht...Gruß Chris
-
besorge dir den speicher dynamisch und du wirst keine probleme haben.
die größe des stacks ist begrenzt.
-
Du hast das Array auf dem Stack, und der ist begrenzt groß (kann man meistens in den Compiler-Optionen einstellen). Aber bei solchen Größen sollte man es auf dem Freestore anlegen, mit new. Oder am besten gleich std::vector benutzen.
-
ahh ok ... danke
-
aber moment... wie groß ist denn der stack ?! sollte man generell lieber variablen NUR dynamisch anlegen ?! also ich rede auch von simplen int vars oder was is wenn der stack voll is und man versucht noch eine weitere int var anzulegen ?!
gruß chris
-
Das, was hier passiert, ist wohl eher die Ausnahme. Grundsätzlich solltest du dynmaische Allozierung nur dann nutzen, wenn du sie brauchst (zum Beispiel, wenn Größe oder Typ (Polymorphie) erst zur Laufzeit festtehen). Der Stack erspart dir die leidige Aufräumarbeit. Außerdem sprengt man den Stack nicht so schnell, wie du denkst. Riesige C-Arrays benutzt man in C++ eher weniger, man hat ja die komfortablen Standard Container, diese legen ihre Elemente auf dem Heap an und du merkst gar nichts davon.
-
Hallo
Wie bereits geschrieben, kannst du den Stack selber einstellen. Wegen ein paar Variablen wird da nichts passieren, aber du redest von 4 Millionen.
chrische
-
okok danke... ne ich nehm auch im normalfall vector etc... aber ich wollts mal testen xD danke für die antworten
-