Malloc
mallocはC言語におけるヒープ領域からのメモリ確保に使われる基本関数である。その関数プロトタイプはstdlib.hヘッダに次のように定義されている。
ここで、sizeバイトのメモリが確保される。確保が成功するとそのメモリブロックへのポインタが返される。
ANSI Cにおいてmallocが返すのは、void型へのポインタ (void *) であり、そのポインタが指す領域のデータ型が不明であることを示している。C言語では汎用ポインタvoid *と任意の型TへのポインタT *との間の型変換 (キャスト) は暗黙的に実行されるため、mallocの戻り値は特に明示的な型変換を記述せずとも任意の型へのポインタ変数にそのまま代入できる。しかし、明示的に型変換を記述する必要が無いにもかかわらず、あえて意図的に型変換を記述することもある。明示的に型変換を記述する目的は、かつてANSI以前の仕様のC(K&R C)においては、void *が存在せず、mallocはchar *を返していたからである。