例との間のalloc ()とcalloc ()の違い


mallocとcalloco ()は、動的にメモリを割り当てるライブラリ関数です.それは、メモリがヒープセグメントから実行時(プログラムの実行)の間に割り当てられることを意味します.
初期化: alloc ()は与えられたサイズのメモリブロック(バイト単位)を割り当て、ブロックの先頭へのポインタを返す.malloc ()は、割り当てられたメモリを初期化しません.メモリブロックの内容(初期化する前に)にアクセスしようとすると、セグメンテーションフォールトエラー(またはガベージ値)を取得します
void * alloc ( sizeank t size );
void * calloc ( sizeound t num , sizeound t size );
引数の数: malloco ()とは異なり、calloco ()は2つの引数をとります:
1 )割り当てられるブロック数.
2)各ブロックの大きさ.
返り値: malloco ()とcalloco ()の割り当てが成功した後、メモリブロックへのポインタが返されます.
例えば、5つの整数の配列のメモリを割り当てたい場合は、次のプログラムを参照してください.
int main ()
{ }
int * arr ;
// malloc() allocate the memory for 5 integers
// containing garbage values
arr = (int*)malloc(5 * sizeof(int)); // 5*4bytes = 20 bytes

// Deallocates memory previously allocated by malloc() function
free(arr);

// calloc() allocate the memory for 5 integers and
// set 0 to all of them
arr = (int*)calloc(5, sizeof(int));

// Deallocates memory previously allocated by calloc() function
free(arr);

return (0);

malloc ()を使って、calset ()と同じ機能を実現できます.
ptr = malloc ( size ),
memset ( ptr , 0 , size );
注意: allocがCallocより速いので、ゼロの初期化をしない限り、Calallocの上でmallocを使う方が良いでしょう.それで、我々がちょうど若干のものをコピーするか、ゼロでブロックの充填を必要としない何かをするならば、mallocはより良い選択であるでしょう.