Linux講座にようこそ。このページは「C言語プログラミング入門 - 第14章.ライブラリ関数 - メモリ操作ライブラリ」です。

C言語プログラミング入門

14. ライブラリ関数(26/36) - メモリ操作ライブラリ(1/2)

C言語では変数(配列や構造体を含む)を使う場合は必ず宣言が必要です。宣言によりメモリ上に必要な領域が確保されます。領域の大きさは変数の型名や配列の要素数により決まります。例えば、int型で要素数が5の配列の場合は、領域の大きさは20バイト(4バイト×5要素)になります。

初期値が無い配列の宣言をする場合、要素数を省略することは出来ませんが要素数が未定の場合が多々あります。例えば、入力データを配列に格納するような場合、一般に、入力データの数は未定です。この様な場合、要素数を多めに指定しておくというような逃げ方が有りますが、これは不良の原因になります。そこで、必要に応じてメモリ領域を確保したり、拡張したりする機能(動的なメモリ操作)が必要となります。

動的なメモリ操作を行いたい場合は、ここで紹介する関数を使うと良いでしょう。なお、メモリを操作するということで、ポインタの知識は必須です。ポインタに付いては「8. データをアドレスで操作するためのポインタ」をご覧ください。

ここで説明する関数は次の通りです。なお、ヘッダファイルとしてはstdlib.hが必要です。

【表14-6-1】 メモリ操作関数一覧
区分関数名機能概要
動的なメモリ操作malloc()指定した大きさのメモリ領域を確保します。
calloc()指定した大きさのメモリ領域を確保します。確保した領域は0(全ビット0)でクリアします。
realloc()確保したメモリ領域を拡張・縮小します。
free()確保したメモリ領域を開放します。