メモリセグメント

メモリセグメントのメモ。

プロセスが扱うメモリ領域はその用途によって複数のセグメントに分けられている。

  • テキスト(コード)セグメント
  • データセグメント
  • bssセグメント
  • ヒープセグメント
  • スタックセグメント

(上のセグメントほど、メモリアドレスが小さい。)

テキストセグメントにはプログラムの命令列が含まれている。 安全性のため、この領域はRead Only。

データセグメントには初期化済みの大域変数が含まれている。

bssセグメントには初期化されていない大域変数が含まれている。

ヒープセグメントはプログラム実行中に動的にメモリを確保するときに使われる。 なので、ヒープセグメントは動的に領域が増えていき、メモリアドレスが大きい方へ増えていく。

スタックセグメントは局所変数や関数の引数渡し、関数の作業領域などに使われる。 関数が呼ばれるとスタックセグメントにスタックフレームが積まれていく。 なので、スタックセグメントも動的に領域が増えていき、メモリアドレスが小さい方へ増えていく。