C ライブラリの malloc() 関数と例

Cのmallocとは何ですか?

malloc() 関数はメモリ割り当てを表します。 これは、メモリのブロックを動的に割り当てるために使用される関数です。 指定されたサイズのメモリ空間を予約し、メモリ位置を指す null ポインタを返します。 返されるポインタは通常、void 型です。 これは、malloc 関数を任意のポインターに割り当てることができることを意味します。

構文

ptr = (cast_type *) malloc (byte_size);

ここでは、

  • ptr は、cast_type のポインタです。
  • malloc 関数は、byte_size の割り当てられたメモリへのポインタを返します。
Example: ptr = (int *) malloc (50)

このステートメントが正常に実行されると、50 バイトのメモリ空間が予約されます。 予約領域の最初のバイトのアドレスは、int 型のポインタ ptr に割り当てられます。

malloc 実装の別の例を考えてみましょう。

#include <stdlib.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */
    if (ptr != NULL) {
      *(ptr + 5) = 480; /* assign 480 to sixth integer */
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

出力:

Value of the 6th integer is 480

Cのmallocとは何ですか

  1. 注意してください sizeof(*ptr) の代わりに使用されました サイズ(int) *ptr 宣言が後で別のデータ型に型変換されるときにコードをより堅牢にするためです。
  2. メモリが十分でない場合、割り当てが失敗する可能性があります。 この場合、NULL ポインタが返されます。 したがって、NULL ポインターをチェックするコードを含める必要があります。
  3. 割り当てられたメモリは連続しており、配列として扱うことができることに注意してください。配列要素にアクセスするには、括弧 [ ] を使用する代わりに、ポインタ演算を使用できます。配列要素を参照するには、インクリメント ++ または += を使用すると、配列に格納されているアドレスが変更されるため、+ を使用することをお勧めします。 ポインタ.

Malloc 関数は、構造体などの複雑なデータ型だけでなく、文字データ型でも使用できます。