/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
Ö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).
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
Geben Sie die Compileroption "/Gs " und eine optionale Größe in "Zusätzliche Optionen" ein. Wählen Sie OK oder Übernehmen, um die Änderungen zu speichern.
So legen Sie diese Compileroption programmgesteuert fest
- Siehe AdditionalOptions.
Siehe auch
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile