例との間のalloc ()とcalloc ()の違い
1278 ワード
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 ()を使って、calset ()と同じ機能を実現できます.
ptr = malloc ( size ),
memset ( ptr , 0 , size );
注意: allocがCallocより速いので、ゼロの初期化をしない限り、Calallocの上でmallocを使う方が良いでしょう.それで、我々がちょうど若干のものをコピーするか、ゼロでブロックの充填を必要としない何かをするならば、mallocはより良い選択であるでしょう.
初期化: 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はより良い選択であるでしょう.
Reference
この問題について(例との間のalloc ()とcalloc ()の違い), 我々は、より多くの情報をここで見つけました https://dev.to/221910302049_sriharsha_narra/difference-between-malloc-and-calloc-with-examples-2955テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol