KDOC 225: mallocをアセンブラで見る
この文書のステータス
- 作成
- 2024-09-09 貴島
- レビュー
- 2024-09-14 貴島
概要
mallocはC言語の標準ライブラリの関数である。動的にメモリ確保する。
これはメモリ管理をプログラマー自身がやるための機能であって、コンパイル時にメモリサイズを決定している方法から外れる。だからアセンブラを見てもmallocが何をしているかはわからない。ただ関数呼び出しをしているのしかわからない。
ローカル変数はコールスタック上に展開される。コンパイル時に、メモリ上に展開するサイズが決定している。必要なサイズが実行時でないとわからないようなケースでは、これは都合がよくない。それにスタック構造を超えて保持しておくということもできない。その解決策として、mallocによってヒープ領域のメモリを使う。
ヒープのポイント。
- 動的に、好きなメモリサイズを確保できる
- 破棄しない限り保持し続ける
関連
抽象。
- 必要な量が実行時にしかわからないものは、事前に決める仕組みの外で扱う
- 自分で確保したものは、自分で手放すまで残り続ける
関連。
- 対比: KDOC 142: データセグメントの使い分けを試す。大きさがコンパイル時にわかる配列は、置き場所をコンパイラが決める例
- 対比: KDOC 173: 『ガベージコレクションのアルゴリズムと実装』。確保したものを、書き手が手放すのでなく処理系が自動で回収する方式