導入
コンピューティングにおいて、 mallocメモリを動的に割り当てることを可能にする標準 C ライブラリの関数です。確保されたメモリの解放はfree関数で行われます。
この関数はヘッダーで宣言されています

メモリ割り当て
プログラムを実行するときは、次の 2 つの方法でメモリを割り当てることができます。
- 静的に、変数宣言によって。
- 使用される プログラミング言語によって提供されるメカニズムによって動的に。
静的割り当てでは、開発者はプログラムが使用するメモリの量を事前に知っておく必要があります。プログラムが割り当てられたタスクを実行するために実際に必要なメモリと比較して、予約されているメモリが多すぎる場合、このようにしてメモリの「無駄」が発生する可能性があります。さらに、メモリは、変数が宣言されている命令ブロックの最後でのみ解放されます。これも、メモリが割り当てられたものの使用できなくなる場合に無駄な要素となる可能性があります。
ここで、動的メモリ割り当てが機能します。メモリはプログラムの実行中に予約されますが、このメモリの解放はコンパイラ/インタープリタではなく、プログラマによって管理されます。これによりプログラムは複雑になりますが、メモリ管理はより細かくなります。
プログラムが、 freeによって解放せずにmallocによってメモリを割り当てた場合、これはメモリ リークと呼ばれます。この種のバグを回避し、プログラムを書きやすくするために、一部の言語にはガベージ コレクション メカニズムが備わっています。
同様の機能

コールク
mallocによって確保されたメモリ領域は、自動的には初期化されません。この初期化は、 memset関数を使用するか、メモリ領域全体をスキャンすることによって実行できます。 calloc関数を使用すると、割り当てられたメモリ領域が 0 で初期化されるため、この初期化フェーズは不要になります。
calloc宣言は次のとおりです。
void * calloc ( size_t nmemb , size_t size ) ;
nmembパラメータは予約する要素の数で、 size要素のバイト単位のサイズに対応します。戻り値はmallocの場合と同じです。
再ロック
realloc関数を使用すると、 mallocで以前に割り当てられたメモリのサイズを変更できます。十分な連続メモリがないためにメモリ領域を移動する必要がある場合、古いメモリ領域の解放は、 freeを介したreallocによって行われます。
realloc宣言は次のとおりです。
void * realloc ( void * ptr , size_t size ) ;
ptrパラメータは、サイズを変更するメモリ領域の開始位置を指定します。 2 番目のパラメータsize 、メモリ領域の新しいサイズ(バイト単位)です。戻り値は、割り当てられたメモリ領域の開始値、または関数が失敗した場合はNULL 。

使用
2 つの関数を使用すると、メモリ領域を動的に予約および解放できます。予約用のmalloc 。その宣言は次のとおりです。
void * malloc ( size_t サイズ) ;
mallocに渡す唯一のパラメータは、割り当てるバイト数です。戻り値は、割り当てられたメモリ領域の最初のバイトのアドレスです。 (空きメモリ不足により) 割り当てを実行できなかった場合、戻り値は定数 NULL です。
mallocによって以前に割り当てられたメモリの解放は、次のように宣言されているfree関数によって保証されます。
void free ( void * ptr ) ;
渡す唯一のパラメータは、割り当てられたゾーンの最初のバイトのアドレスであり、この操作が実行されると値は返されません。
以下は 20 バイトを予約し、割り当てが行われた直後に解放するコードです。
#含むchar *ポインタ= malloc ( 20 * sizeof ( char ) ) ; //20バイトの割り当てif ( pointer == NULL ) { printf ( "割り当てを実行できませんでした\n " ) ; } else { printf ( "割り当ては成功しました\n " ) ;フリー(ポインタ) ; //以前に割り当てられた 20 バイトを解放します}
