Wie groß ist der Stack?
-
Hi,
wie groß ist eigentlich der Stack Speicher?
Ich hab ein Programm geschrieben das eine Menge (15000) Datensätze einliest (als char*) und es stürzt bei Windows abmfg chris ++
-
Das kommt auf den Compiler an. Das kann man meist auch einstellen im Compiler. Mit dem Betriebssystem hat das nichts zu tun:
-
hm... das Programm verursacht erst in der Laufzeit einen Fehler (sofort nach dem Start). (Windowsmeldung: Einstein hat in Einstein.exe einen Fehler verursacht). Ob ich die Compilierte EXE starte oder einfach vom Compiler aus einen Testlauf mache... es kommt auf's selbe raus
-
Die Antwort bleibt trotzdem: Die Größe des Stacks hängt davon ab, wie du dein Programm compilierst. Du kannst ja dem Compiler anweisen, einen 93846579 Terrabyte großen Stack beim Programmstart anzulegen.
-
Wenn du Zeiger benutzt, bist du mit ziemlich großer Wahrscheinlichkeit gar nicht auf dem Stack zu Gange. Hast du mal den Debugger bemüht?
-
Chris++ schrieb:
Hi,
wie groß ist eigentlich der Stack Speicher?meistens ein MB groß.
Ich hab ein Programm geschrieben das eine Menge (15000) Datensätze einliest (als char*) und es stürzt bei Windows ab
mfg chris ++15000 mal 4 bytes ist noch weit kleiner als ein MB. da sollte noch nix passieren.
-
volkard schrieb:
15000 mal 4 bytes ist noch weit kleiner als ein MB. da sollte noch nix passieren.
ich glaube das 4 bytes zu wenig sind:
struct Straße { int pos; char farbe[5]; char nat[8]; char tier[8]; char bla[7] char blub[7]; } haus[15625][5];
"notdürftig" hab ich statt 15625 eine 3125 eingegeben und es läuft.
danke für eure Hilfe
-
Chris++ schrieb:
ich glaube das 4 bytes zu wenig sind:
Du hast von char* gesprochen.
Leg das Array dynamisch an. In den FAQ findest du einen Thread über dynamische mehrdimensionale Arrays.