/Gs (スタック チェック呼び出しの制御)
スタック プローブを制御します。
/Gs[size]
引数
- size
(オプション) スタック プローブがアクティブになる前に、ローカル変数が使用できるバイト数。
解説
このオプションでは、高度な機能を使ってスタック プローブを制御します。スタック プローブとは、コンパイラがすべての関数呼び出しに挿入するコード群です。スタック プローブがアクティブになると、該当する関数のローカル変数を保存するために必要なスタック領域のサイズ分だけがメモリに入ります。
関数のローカル変数を保存するために必要なスタック領域が size バイトを超えると、その関数のスタック プローブがアクティブになります。size の既定値は 1 ページのサイズです。
x86 の場合は 4 KB
x64 の場合は 4 KB
Itanium の場合は 8 KB
アプリケーションおよび Windows メモリ マネージャーは、この値によって、実行時にプログラム スタックに割り当てられるメモリ容量を増やすことができます。
[!メモ]
Windows 対応アプリケーションのプログラム スタックは、既定値の size によって、実行時に適切な増加を行うことができます。このため、/Gs オプションの既定値は、明確な根拠がない限り変更しないでください。
仮想デバイス ドライバーなど、一部のプログラムでは、この既定のスタック増加機構は必要ありません。つまり、スタック プローブそのものが不要です。スタック プローブの生成を停止するには、関数がローカル変数の保存に必要とする値よりも大きな値を size に設定します。/Gs と size の間には空白を入れられません。
/Gs0 は /Ge (スタック プローブの有効化) と同じ効果があります。
スタック プローブの有効/無効は、check_stack で切り替えることができます。ただし、/Gs と check_stack プラグマは、コンパイル対象の関数にだけ反映され、C の標準ライブラリ ルーチンには無効です。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダーをクリックします。
[コマンド ライン] プロパティ ページをクリックします。
[追加のオプション]ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- AdditionalOptions を参照してください。