Share via


/GF (消除重複字串)

更新:2010 年 7 月

使編譯器能夠在執行過程中在程式影像和記憶體中建立完全相同的字串副本。 這是稱為「字串共用」(String Pooling) 的最佳化,可以建立較小的程式。

/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 個可定址的區段。 如果您的程式包含超過 65536 個字串,請使用/bigobj編譯器選項建立更多區段。

使用 /O1/O2 時,/GF 會啟用。

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

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資訊,請參閱 HOW TO:開啟專案屬性頁

  2. 按一下 [C/C++] 資料夾。

  3. 按一下 [程式碼產生] 屬性頁。

  4. 修改 [啟用字串共用] 屬性。

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

請參閱

參考

編譯器選項

設定編譯器選項

變更記錄

日期

記錄

原因

2010 年 7 月

記錄 /GF 編譯器選項為每個唯一的字串建立一個區段。

客戶回函。