Können Sie die Größe des Call-Stack in C ++ eingestellt? (VS2008)
Frage
Ich arbeite von einem Beispiel Stück Code, das einen relativ großen lokalen Array zuzuweist. (32768 um genau zu sein) Wenn ich das gleiche versuche ich Verhalten bekommen, die ein Stapelüberlauf zu sein scheint. Nun habe mich gefragt, ob ich mein Beispiel vielleicht den Stapel größer dann meine Anwendung gesetzt hat. Ist das möglich? wenn ja, wie?
Lösung
Mit dem Microsoft-Compiler können Sie verwenden / F die Stapelgröße zu setzen, jedoch scheint es, wie Sie nur das Objekt auf dem Heap zuweisen soll. Sie sollten einen Grund haben Sie diese auf dem Stack, anstatt dem Heap sind zuordnet.
Edit: Diese Seite eine gute grenzüberschreit gibt Plattform Zusammenbruch, obwohl es datiert werden kann.
Andere Tipps
Sie können den / F Compiler-Flag verwenden, um die Standard-Stack-Größe einzustellen, oder es als zweiten Parameter an das Create Funktion.
Anstatt Chaos mit der Stack-Größe, warum Sie einfach nicht ein std :: vector oder sogar einem Array selbst dynamisch zuweisen?
Sie könnten einen neuen Thread für diese Arbeit schaffen. Sie können in der Regel die Größe des Stapels angeben beim Erstellen eines Threads, und sicherlich mit VS2008 der CreateThread()
Funktion