malloc
指定バイト分、メモリ領域を確保する
【書式】
#include <stdlib.h>
void *malloc(size_t size);
【説明】
ヒープメモリから size バイトのブロックを割り当てます。確保されたブロックは 0 クリアされません。
この関数を使うことにより、プログラムで予め配列などを使ってメモリを確保せずに、必要な場所で必要なだけメモリを確保することが出来ます。木構造やリストなど多くのデータ構造は、通常
malloc関数によって動的にメモリを確保します。
malloc関数で確保したメモリは、使用後、必ず free関数で解放してください。
【引数】
size_t size : 確保したいメモリのバイトサイズ
size_t は stdlib.h の中でtypedefされ、一般にunsignedです。
【戻り値】
成功時 : 確保したメモリブロックを指すポインタ
失敗時 : NULL (メモリ不足により指定サイズ分のメモリが確保できないとき)
(参考) 「void *」 とは
「void *」 は、どのような型のポインタでも指定できる汎用ポインタ型です。
malloc関数で返却されるポインタの型は、malloc関数を使用する場所ごとに異なります。そのため、型の指定が出来ません。よって、この「void
*」で「どのような型にするかは後で決めてください。とりあえずポインタを返しますよ。」と宣言するのです。しかし、使用するときには、次の使用例のように、本来の目的の型でキャストしてやるべきでしょう。
【使用例】
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *str;
/* 文字列のためのメモリを確保 */
str = (char *)malloc(100);
if(str == NULL) {
printf("メモリが確保できません\n");
exit(EXIT_FAILURE);
}
/* 文字列を入力 */
gets(str);
/* 文字列の表示 */
puts(str);
/* メモリの解放 */
free(str);
return 0;
}
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved