/GF(消除重复的字符串)
更新:2007 年 11 月
该选项使编译器能够为执行过程中程序映像和内存中的相同字符串创建单个副本,从而得到较小的程序,这种优化称为字符串池。
/GF
备注
/GF 将字符串汇集为只读字符串。
如果使用 /GF,操作系统将不交换内存的字符串部分,并可从映像文件读回字符串。如果试图在 /GF 下修改字符串,则会发生应用程序错误。
字符串池允许将作为指向多个缓冲区的多个指针用作指向单个缓冲区的多个指针。在下列代码中,s 和 t 用相同字符串初始化。字符串池使它们指向相同的内存:
char *s = "This is a character buffer";
char *t = "This is a character buffer";
说明: |
---|
用于“编辑并继续”的 /Z7、/Zi、/ZI(调试信息格式) 选项,会自动设置 /GF 选项。 |
当使用 /O1、/O2(最小化大小、最大化速度) 或 /O2 时,/GF 有效。
在 Visual Studio 开发环境中设置此编译器选项
打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。
单击“C/C++”文件夹。
单击“代码生成”属性页。
修改“启用字符串池”属性。
以编程方式设置此编译器选项
- 请参见 StringPooling。