/Gs (Kontrollstapelüberprüfungsaufrufe)

Steuert den Schwellenwert für Stapelsonden.

Syntax

/Gs[size]

Argumente

size
(Optional) Die Anzahl von Bytes, die von lokalen Variablen belegt werden können, bevor eine Stapelüberprüfung initiiert wird. Es ist kein Leerzeichen zwischen /Gs und size.

Hinweise

Ein Stapelsonde ist eine Sequenz von Code, den der Compiler am Anfang eines Funktionsaufrufs einfügt. Beim Initiieren erreicht ein Stapelsonde gut in den Arbeitsspeicher den erforderlichen Speicherplatz, um die lokalen Variablen der Funktion zu speichern. Dieser Prüfpunkt bewirkt, dass das Betriebssystem bei Bedarf transparent in mehr Stapelspeicher übergeht, bevor die restliche Funktion ausgeführt wird.

Standardmäßig generiert der Compiler Code, der eine Stapelüberprüfung initiiert, wenn für eine Funktion mehr als eine Seite Stapelspeicher erforderlich ist. Dieser Standardwert entspricht einer Compileroption für /Gs4096 x86-, x64-, ARM- und ARM64-Plattformen. Mit diesem Wert sind eine Anwendung und der Speichermanager von Windows in der Lage, den für den Programmstapel reservierten Arbeitsspeicher zur Laufzeit dynamisch zu erhöhen.

Hinweis

Der Standardwert, /Gs4096 mit dem der Programmstapel von Anwendungen für Windows zur Laufzeit ordnungsgemäß wächst. Wir empfehlen, den Standardwert nur dann zu ändern, wenn Sie genau wissen, warum Sie ihn ändern müssen.

Für einige Programme , z. B. virtuelle Gerätetreiber, ist dieser standardmäßige Stapelwachstumsmechanismus nicht erforderlich. In solchen Fällen sind die Stapelsonden nicht erforderlich, und Sie können den Compiler daran hindern, sie zu generieren, indem Sie einen Wert festlegen size , der größer als jede Funktion ist, die für den lokalen Variablenspeicher erforderlich ist.

/Gs0 initiiert Stapelsonden für jeden Funktionsaufruf, der Speicher für lokale Variablen erfordert. Dieser Wert kann sich negativ auf die Leistung auswirken.

Wenn Sie für x64-Ziele die /Gs Option ohne size Argument angeben, ist sie identisch mit /Gs0. Wenn das size Argument 1 bis 9 ist, gibt der Compiler die Warnung D9014 aus, und der Effekt entspricht der Angabe /Gs0.

Bei x86-, ARM- und ARM64-Zielen ist die /Gs Option ohne size Argument identisch mit /Gs4096. Wenn das size Argument 1 bis 9 ist, gibt der Compiler die Warnung D9014 aus, und der Effekt entspricht der Angabe /Gs4096.

Für alle Ziele legt ein size Argument zwischen 10 und 2147483647 den Schwellenwert auf den angegebenen Wert fest. Ein size 2147483648 oder höher verursacht schwerwiegenden Fehler C1049.

Mithilfe der check_stack Direktive können Sie Stapelsonden aktivieren oder deaktivieren. /Gs und das check_stack Pragma hat keine Auswirkungen auf Standard-C-Bibliotheksroutinen; sie wirken sich nur auf die Funktionen aus, die Sie kompilieren.

So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

  3. Geben Sie die Compileroption "/Gs " und eine optionale Größe in "Zusätzliche Optionen" ein. Wählen Sie "OK" aus, oder "Übernehmen", um Ihre Änderungen zu speichern.

So legen Sie diese Compileroption programmgesteuert fest

Siehe auch

MSVC-Compileroptionen
MSVC-Compiler-Befehlszeilensyntax