はじめての C

ポインタ 4

ポインタは、実行中に - at runtime - (メモリの) 増減が できるので、データ構造体では、さかんに 使われます。

動的なサイズ設定 - dynamic sysing - では、プログラマに、malloc, calloc, realloc それと free を 使うことで、ポインタを 通して メモリ処理 - handle memory - を することが 求められます。

このような データ構造体は、(リンクリスト、二分木 その他の) ノードや、(サイズ変更の可能な配列 - resizable arrays - による) ブロックが その基本に なっています。

配列と、求められる 配列数に対して、その型の 要素のサイズを 増やす - multiplying - ための 充分なメモリを 確保する 簡単な malloc を つくって、ポインタを 使ってみましょう。

int *parray = malloc(10 * sizeof(int));
if (parray != NULL)
{
/* Okay, use it */
}

malloc, calloc それに realloc で 注意してほしいのは、失敗したときに すべて null ポインタを 返すことです。

上のコードは 基本的には、静的な 配列を 使うのと 同じになります。

int array[10];

ただし、大きな 相違点として、realloc を 使えば、parray の サイズの 増減が、実行中で あっても、制御されるということが あります。

2つ目の 大きな違いとしては、malloc, calloc あるいは realloc を 使って 割り当てた メモリを 解放する - free the memory - ということを "必ず" 覚えておかないと いけない点です。