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