Visual Studio 2017 を使用することをお勧めします

/GF (同一文字列の削除)

 

公開日: 2016年7月

Visual Studio 2017 RC の最新のドキュメントの詳細については、Visual Studio 2017 RC ドキュメントをご参照ください。

実行中にプログラム イメージとメモリで、同一文字列のコピーが 1 つだけ作成されます。 これは文字列プールと呼ばれる最適化で、これによってより小さいプログラムが作成されます。

/GF  

/GF を使用すると、オペレーティング システムではメモリの文字列部分をスワップせず、イメージ ファイルから文字列を読み戻すことができます。

/GF は、読み取り専用として文字列をプールします。 /GF で文字列の変更を試みると、アプリケーション エラーが発生します。

文字列プールを使用すると、複数のポインターで複数のバッファーを指したつもりでも、それらの複数のポインターで 1 つのバッファーを指すことができます。 次のコードでは、st が同じ文字列で初期化されます。 文字列プールを使用すると、s と t は同じメモリを指します。

char *s = "This is a character buffer";  
char *t = "This is a character buffer";  

System_CAPS_ICON_note.jpg メモ

エディット コンティニュに対して /ZI オプションを使用すると、/GF オプションが自動的に設定されます。

System_CAPS_ICON_note.jpg メモ

/GF コンパイラ オプションは、一意の文字列に対してそれぞれアドレス指定が可能なセクションを作成します。 また、既定では、オブジェクト ファイルはアドレス指定可能なセクションを最大 65,536 個保持できます。 プログラムの文字列が 65,536 を超える場合は、より多くのセクションを作成するためにコンパイラ オプション /bigobjを使用します。

/O1 または /O2 が使用されるとき、/GF は有効です。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダーをクリックします。

  3. [コード生成] プロパティ ページをクリックします。

  4. [文字列プール] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

コンパイラ オプション
コンパイラ オプションの設定

表示: