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;
}

戻る


banner
初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved