共用方式為


/Gs (控制堆疊檢查呼叫)

控制堆疊探查的臨界值。

語法

/Gs[size]

引數

size
(選擇性) 在起始堆疊探查之前,本機變數可佔用的位元組數目。 和 size 之間 /Gs 不允許空白字元。

備註

堆疊探查 是編譯器在函式呼叫開頭插入的程式碼序列。 起始時,堆疊探查會藉由儲存函式區域變數所需的空間量,以良性方式進入記憶體中。 此探查會在函式的其餘部分執行之前,以透明方式在更多堆疊記憶體中分頁。

根據預設,編譯器產生的程式碼會在函式需要超過一頁的堆疊空間時,起始堆疊探查。 此預設值相當於 x86、x64、ARM 和 ARM64 平臺的 /Gs4096 編譯器選項。 這個值允許應用程式和 Windows 記憶體管理員動態地在執行階段增加認可給程式堆疊的記憶體數量。

注意

的預設值 /Gs4096 可讓 Windows 的程式堆疊在執行時間正確成長。 我們建議您不要變更預設值,除非您確實知道為何必須變更它。

例如,某些程式,虛擬裝置磁碟機不需要此預設堆疊成長機制。 在這種情況下,不需要堆疊探查,而且您可以藉由將 設定 size 為大於任何函式所需的區域變數儲存體值,來停止編譯器產生探查。

/Gs0 針對需要區域變數儲存體的每個函式呼叫起始堆疊探查。 這個值可能會對效能產生負面影響。

針對 x64 目標,如果您指定 /Gs 不含 size 引數的選項,則它與 /Gs0 相同。 如果自 size 變數為 1 到 9,編譯器會發出警告 D9014,而且效果與指定 /Gs0 相同。

針對 x86、ARM 和 ARM64 目標, /Gs 沒有 size 引數的選項與 相同 /Gs4096 。 如果自 size 變數為 1 到 9,編譯器會發出警告 D9014,而且效果與指定 /Gs4096 相同。

針對所有目標, size 介於 10 和 2147483647的引數會設定指定值的臨界值。 size2147483648或更新版本的 ,會導致嚴重錯誤 C1049。

您可以使用 指示詞來開啟或關閉 check_stack 堆疊探查。 /Gscheck_stack和 pragma 不會影響標準 C 程式庫常式;它們只會影響您編譯的函式。

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。

  3. 在 [ 其他選項 ] 中 輸入 /Gs 編譯器選項和選擇性大小。 選擇 [確定 ] 或 [ 套用 ] 以儲存您的變更。

若要以程式方式設定這個編譯器選項

另請參閱

MSVC 編譯器選項
MSVC 編譯器命令列語法