C でのグローバル変数のメモリ割り当て: スタックとヒープ
C では、データ構造がグローバルに宣言されるとき、次のような疑問が生じます。スタックメモリまたはヒープメモリを消費します。これを理解するために、一般的な C プロセスのメモリ レイアウトを詳しく調べます。
C プロセスのメモリ レイアウト
C プロセスは通常、次の 5 つの異なるメモリ領域を割り当てます。
グローバル変数割り当て
グローバル変数が宣言されると、そのメモリはデータセグメントまたはbss セグメント。
したがって、グローバル変数は、 の一部であるデータ セグメントまたは bss セグメントに格納されます。に割り当てられた静的メモリ program.
Example
指定された例では、配列 arr は struct AAA 型のグローバル変数です。これは、初期化されている (デフォルト値がある) か、初期化されていない (ガベージ値が含まれている) かに応じて、データ セグメントまたは bss セグメントのいずれかに割り当てられます。
結論
要約すると、C のグローバル データ構造は、プログラムに割り当てられた静的メモリ、具体的にはどちらにも属さないデータ セグメントまたは bss セグメントからメモリを消費します。スタックまたはヒープ メモリ領域。
以上がC のグローバル変数はメモリをどこに保存しますか: スタックまたはヒープ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。