📝

Rustにおけるメモリ

に公開

1.メモリの領域の種類
・コード領域
・静的領域
・スタック領域
・ヒープ領域

ヒープ領域やスタック領域はプログラム中で一時的に使用するメモリでRAM上のセクションの一部に属する。

1-1.スタック領域
確保したのと逆の順番で解放される。下から積み上げた荷物を上から取り除いていくイメージ。
ローカル変数、関数の引数が一時的に保存される。
関数呼び出し終了でスタックデータが破棄(解放)される挙動は、
→「値が変数に束縛され、変数の宣言されたスコープが無効になると値が破棄される」と同義。

1-2.ヒープ領域
プログラム実行中に必要サイズのメモリをで動的に確保・解放する。
例えばファイルを読み出して、そのファイルの内容を置いておいたりするときに使う。
プログラム実行中に領域の大きさが決まるものが保存される。(malloc関数 ,new演算子など)

アクセスするスピードが低速な代わりに保存できるデータ容量が大きく、任意の容量を割り当てることができる。容量の小さいポインタやデータ長などのメタデータはスタックへ保存される。

Discussion