TIL 12|メモリの動的割当て-calloc関数、realloc関数

2857 ワード

calloc関数


heap領域にメモリを割り当てる関数で、malloc関数と同じ機能を持ちます.
calloc 함수의 기본형 -
void * calloc(size_t elt_count, size_t elt_size);
-> 성공 시 할당된 메모리의 주소값, 실패 시 NULL 반환
  • malloc関数
  • int ptr1 = (int*) malloc(sizeof(int)*5);
    ->20byte를 heap영역에 할당해라
  • calloc関数
  • int ptr2 = (int*)calloc(5, sizeof(int));
    -> 4byte 크기의 메모리 5개를 heap영역에 할당해라(20byte)
    上記のように、calloc関数とmalloc関数の違いは、メモリ空間を割り当てるための伝達方式にある.

  • malloc関数:割り当てるバイトサイズを一度に渡す

  • calloc関数:最初の伝達パラメータは、割り当てられるメモリブロックの数を伝達します.2番目の伝達パラメータは、各ブロックのバイトサイズを伝達する
  • そして、もう一つの違いがあります.malloc関数はheap領域に割り当てられた空間を個別の値に初期化しません.したがって、割り当てられたメモリ領域はゴミ値で満たされます.
    ただしcalloc関数は、割り当てられたすべてのメモリ領域を0に初期化します.したがって、配列を割り当ててすべて0に初期化する必要がある場合はcallocを使用します.

  • malloc関数:割り当てられたメモリ領域の個別値Xに初期化します.ゴミ値として入力します.

  • calloc関数:割り当てられたすべてのメモリ領域を0に初期化します.