cppreference.com -> 標準 C メモリ関数 -> 詳細

標準 C メモリ関数


calloc

文法:

  #include <stdlib.h>
  void *calloc( size_t 個数, size_t サイズ );

calloc()関数はサイズ バイトの大きさを持つ個数 個のメモリブロックの配列へのポインタを返す。エラーが発生した場合にはcalloc()はNULLを返す。

関連トピック:
free(), malloc(), realloc().

free

文法:

  #include <stdlib.h>
  void free( void *ポインタ );

free()はポインタ が指すメモリを解放し、将来、他の場所で使用できるようにする関数である。ポインタmalloc(), calloc(), realloc()などを呼び出して確保したメモリブロックへのポインタを指定しなければならない:

    typedef struct data_type {
      int age;
      char name[20];
    } data;
    
    data *willy;
    willy = (data*) malloc( sizeof(willy) );
    ...
    free( willy );
関連トピック:
calloc(), malloc(), realloc().

malloc

文法:

  #include <stdlib.h>
  void *malloc( size_t サイズ );

malloc()はサイズ の大きさを持つメモリブロックを確保してそのポインタを返す関数である。エラーが発生した場合にはNULLを返す。確保されるメモリはスタックではなく、ヒープ上のメモリになるため、使い終わったらfree()を呼び出して解放する必要がある。サンプル:

    typedef struct data_type {
      int age;
      char name[20];
    } data;
    
    data *bob;
    bob = (data*) malloc( sizeof(data) );
    if( bob != NULL ) {
      bob->age = 22;
      strcpy( bob->name, "ロバート" );
      printf( "%s は %d 歳です\n", bob->name, bob->age );
    }
    free( bob );
関連トピック:
free(), realloc(), calloc().

realloc

文法:

  #include <stdlib.h>
  void *realloc( void *ptr, size_t サイズ );

realloc()はポインタ が指すメモリオブジェクトのサイズをサイズ に変更する関数である。サイズ は元のサイズよりも大きくても小さくても良い。返値は新しいメモリ領域へのポインタである。エラーが発生した場合にはNULLが返される。

関連トピック:
free(), malloc(), calloc().