領域割付け関数 【memory allocation function】
概要
領域割付け関数(memory allocation function)とは、C言語などのプログラミング言語に用意されている関数の一種で、メインメモリ(RAM)上の領域を確保してデータの記録に利用できるようにするもの。malloc関数などが該当する。プログラム中で変数や配列を宣言すると、プログラムの実行時に静的にメモリ領域が確保され、終了時まで保持される。しかし、プログラムの実行時に必要となる容量が決まる場合もあるため、実行時に必要な容量を指定して領域を確保する仕組みが用意されていることが多い。
C言語やC++言語などでは、標準ライブラリ関数などとして動的メモリ確保の機能が用意されており、欲しいサイズをsizeof型の引数に指定すると、返り値として確保した領域の先頭のメモリアドレスをポインタ型の値を返却する。どのようなデータ型の値の記録に用いるかは実装次第となる。
処理系によっていくつかの種類が用意されており、単に領域を確保するだけのmalloc関数(memory allocationの略)、確保した領域を0で初期化(ゼロクリア)するcalloc関数(contiguous allocationの略)、確保したサイズを後から変更できるrealloc関数(reallocationの略)などがある。
領域割付け関数で確保した領域は不要になったらfree関数などで解放しないと確保されたまま放置され、利用可能なメモリ容量を圧迫してしまう(メモリリーク)。また、指定した容量が空いていない場合などにエラーとなることがあるため、確保に失敗した場合の処理も記述する必要がある。
(2023.11.21更新)