calloc
サイズsize
のそれぞれ、メモリのnum
ブロックを割り当てる:mallocとcallocによって割り当てられたメモリブロックレイアウトの違いはありますか?
void * calloc (size_t num, size_t size);
メモリ に配列するためのスペースを割り当て、それらの各サイズNUM要素のアレイのためのメモリのブロックを割り当てすべてのビットをゼロに初期化します。対照的に
、malloc
サイズsize
のメモリの一つのブロック割り当て:
void * malloc (size_t size);
メモリブロックを割り当てる を指すポインタを返す、メモリのサイズのバイトのブロックを割り当てブロックの始め。
(calloc
によってゼロ初期化を除く)の両方との間の違いがありますか?
callocは、実際にはnum
ブロック単位のメモリを意味し、返されるメモリ領域は連続しています。
私はいくつかの違いがあると思いますが、そうでなければ、これらのメソッドに2つの異なるインターフェースを定義することはあまり意味がありません。
はい、私はメモリが連続していないと考えてみることさえできませんでした。つまり、用語は、メモリのnブロックが誤っているということですか? –
@AvantikaSkはい、それは間違っています。 – nos
実際には、callocはサイズnの要素の配列を格納するのに適した単一のメモリブロックを割り当てます。ほとんどの実装では、callocはmallocを呼び出し、メモリをゼロにします。私は彼らが偶然に2つの異なるプロトタイプを持っていると思います。そして、callocがメモリをゼロにするので、それらは異なっています。 –