/Gf, /GF (Eliminate Duplicate Strings)
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

/Gf, /GF (Eliminate Duplicate Strings)


These options enable the compiler to create a single copy of identical strings in the program image and in memory during execution, resulting in smaller programs, an optimization called string pooling.

  • /Gf pools strings as read/write.
  • /GF pools strings as read-only.

If you use /GF, the operating system does not swap the string portion of memory and can read the strings back from the image file. If you try to modify strings under /GF, an application error occurs.

If you use /Gf, it is your program's responsibility not to overwrite pooled strings.

Note   In the next release of Visual C++, /Gf will be removed from the compiler. You should either remove /Gf from your projects or replace it with /GF. /Gf can cause unexpected behavior if a string that was pooled with another one is written. So, you should not use /Gf if you write to your strings and if you are not writing to your strings, you should use /GF.

String pooling allows what were intended as multiple pointers to multiple buffers to be as multiple pointers to a single buffer. In the following code, s and t are initialized with the same string. String pooling causes them to point to the same memory:

char *s = "This is a character buffer";
char *t = "This is a character buffer";
Note   The /ZI option, used for Edit and Continue, automatically sets the /GF option. This means that strings will be pooled and placed in read-only memory even if you specify /Gf manually.

/GF is in effect when /O1 or /O2 is used.

To set this compiler option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
  2. Click the C/C++ folder.
  3. Click the Code Generation property page.
  4. Modify the Enable String Pooling (/GF) property. Set /Gf in the Command Line property page.

To set this compiler option programmatically

See StringPooling Property.

See Also

Compiler Options | Setting Compiler Options

© 2016 Microsoft