/GF (消除重複字串)
可讓編譯器在執行期間,在程式映射和記憶體中建立相同字串的單一複本。 這是稱為 字串共用 的優化,可建立較小的程式。
語法
/GF
備註
如果您使用 /GF ,作業系統不會交換記憶體的字串部分,而且可以從映射檔讀取字串。
/GF 集區字串為唯讀。 如果您嘗試修改 /GF 下的 字串,就會發生應用程式錯誤。
字串共用可讓多個緩衝區的多個指標成為單一緩衝區的多個指標。 在下列程式碼中, s
並使用 t
相同的字串初始化。 字串共用會導致它們指向相同的記憶體:
char *s = "This is a character buffer";
char *t = "This is a character buffer";
注意
用於 [編輯後繼續] 的 /ZI 選項會自動設定 /GF 選項。
注意
/GF 編譯器選項會為每個唯一字串建立可定址的區段。 根據預設,物件檔最多可包含 65,536 個可定址區段。 如果您的套裝程式含超過 65,536 個字串,請使用 /bigobj 編譯器選項來建立更多區段。
在 Visual Studio 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [ 組態屬性 > C/C++ > 程式碼產生 ] 屬性頁。
修改 [ 啟用字串共用 ] 屬性。
若要以程式方式設定這個編譯器選項
- 請參閱 StringPooling。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應