分享方式:


/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的自變數會設定指定值的臨界值。 size 2147483648或更新版本的 ,會導致嚴重錯誤 C1049。

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

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

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

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

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

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

另請參閱

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