メモリセグメント
memory segments
言語の仕様や実装による
メモリをどう扱うかという話なので、好きなように分けちゃって良い
一般的にこの4つに分けると便利だよね、みたいなのがあるだけ
https://gyazo.com/907cfe024a52e55111dd547bcf87ab80 https://en.wikipedia.org/wiki/File:Program_memory_layout.pdf
下がアドレス0
上に行くほどアドレスは大きくなる
静的な領域
コンパイルやリンクの時点でサイズや場所が決まる
block starting symbol
初期化されていないグローバル変数を置く
動的な領域
実行時にサイズや場所が決まる
動的にサイズが確保されるデータを置く
関数の引数やローカル変数などの一時変数を置く
参考
Ruby, PHP, Python, C, Java, Rustについても
実験して各セグメントのサイズを可視化