/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
堆疊探查。 /Gs
check_stack
和 pragma 不會影響標準 C 連結庫例程;它們只會影響您編譯的函式。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性]>[C/C++]>[命令列] 屬性頁。
在 [其他選項] 中輸入 /Gs 編譯程式選項和選擇性大小。 選擇 [確定] 或 [套用] 以儲存變更。
若要以程式方式設定這個編譯器選項
- 請參閱 AdditionalOptions。