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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top