静的変数は、C および C プログラミングにおいて重要な役割を果たし、オブジェクトの存続期間全体にわたってデータを保持できるようにします。プログラム。しかし、名前の衝突が発生しないようにするには、これらの変数は実行可能ファイルのどこに正確に格納されるのでしょうか?
次のコード スニペットを考慮してください:
// foo.c static int foo = 1; void fooTest() { static int bar = 2; foo++; bar++; } // bar.c static int foo = 10; void barTest() { static int bar = 20; foo++; bar++; }
これらのファイルを main 関数でコンパイルおよびリンクするとき、 fooTest() と barTest() を繰り返し呼び出すと、printf ステートメントは独立してインクリメントされます。これは、foo 変数と bar 変数がそれぞれの翻訳単位に対してローカルであることを示します。
実行可能ファイル内の静的変数の割り当ては、初期化によって異なります。
静的変数の具体的な格納場所は、使用されるツールチェーンによって異なる場合があります。この説明では、GNU Compiler Collection (GCC) を使用していると仮定します。
C および C の静的変数は、実行可能ファイルの .BSS または .DATA セグメントに格納されます。ファイルの初期化に応じて。これにより、各静的変数に一意のメモリ位置が確保され、名前の衝突が防止されます。
以上が静的変数は C および C 実行可能ファイルのどこに保存されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。