C および C で静的変数とグローバル変数はいつ初期化されますか?
C および C では、静的変数とグローバル変数には個別の初期化手順があります。 main 関数の前に静的オブジェクトとグローバル オブジェクトが構築される C とは異なり、C にはそのような初期化がありません。
C での初期化タイミング
C コードでは、次のようなグローバル変数が使用されます。 global_int1 と global_int2 には明示的な初期化子がなく、システムによって 0 に初期化されます。ただし、静的変数 static_int1 および static_int2 は初期化されません。これらの値は、プログラム内で明示的に設定されるまで不定のままです。
C の初期化値
値が 5 の global_int1 など、明示的な初期化子を持つ変数には、その値が割り当てられます。コードの変換の一部としてコンパイラによって行われます。この値は、実行可能ファイルのデータ セグメントに保存されます。
プログラムの実行時に、システムはデータ セグメントを含む実行可能ファイルをメモリにロードします。その後、グローバル変数にメモリが割り当てられ、データ セグメントに格納されている値で初期化されます。
C の初期化フェーズ
C は、静的変数の 3 フェーズの初期化プロセスに従います。名前空間スコープを持つオブジェクト:
C でのメモリ管理
C の静的初期化値は、実行可能ファイルのデータ セグメントに格納されます。 C と同様に、これらの値はプログラムの実行中にメモリにロードされ、それぞれの変数に割り当てられます。
初期化子を持たない変数、または動的初期化を伴う変数は、bss セグメントにメモリが割り当てられます。システムはプログラムの実行前にこれらの変数を 0 に初期化します。
以上がC および C の静的変数とグローバル変数の初期化プロセスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。