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 ab 😕

    mfg 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.


Anmelden zum Antworten