学生が質問をしました、そして私は確かに知りませんでした。
推測には、「カウント」、「クリア」、「チャンク」、「完全」などがあります。
標準ライブラリのドキュメントはそれが何を意味するのかを述べておらず、パターンを示す類似した名前の関数はありません。誰かが実際の語源を知っていて、おそらくそれを裏付ける信頼できる参照がありますか?
本の抜粋 Linux System Programming (Robert Love作)によると、calloc
の語源に関する公式の情報源はありません。
一部のもっともらしい候補は次のようです:
calloc
は個別のカウント引数を取るためです。Clear、これにより、返されたメモリチャンクが確実にクリアされます。
[〜#〜] c [〜#〜](C言語の場合と同様)。
私はいくつかの調査を行い、以下を "UNIX @タイムシェアリングシステム:UNIXプログラマーズマニュアル。第7版、第2巻"、「プログラミング」の章 (イタリック体):
char *malloc(num);
num
バイトを割り当てます。返されたポインタは、あらゆる目的に使用できるように十分に調整されています。NULL
は、使用可能なスペースがない場合に返されます。char *calloc(num, size);
num
アイテムそれぞれにsize
サイズのスペースを割り当てます。スペースは0に設定されていることが保証されており、ポインタは、あらゆる目的に使用できるように十分に調整されています。NULL
は、使用可能なスペースがない場合に返されます。cfree(ptr) char *ptr;
calloc
が使用するプールにスペースが返されます。 ポインタがcalloc
から取得されなかった場合、障害が発生する可能性があります。
最後の文は、calloc()
が間違いなく(意味があるのか)malloc()
とは異なることを明確に示しています。 。
興味深いことに、これらの数百のページのいずれにもfree()
への参照はありません... :-)
さらに、UNIX V6にはすでに calloc()
があり、これが alloc()
を呼び出します。 (リンクされた)ソースには、メモリをゼロにする方法は示されていません。
上記の両方の事実から結論づけると、calloc()
の先頭の「c」は「明確」を表すという理論に強く反対します。
誰も知らないと思います。しかし、以前のfree()操作で残ったランダムなゴミを返すmalloc(メモリ割り当て)とは対照的に、メモリをクリアする必要があるというセマンティクスでcalloc()呼び出しを説明すると便利ですmodus operandi学生用。これは、malloc()が安全でない値を返すことをユーザーに思い出させるのに役立ちます。
calloc
=連続したメモリ割り当て。
これは、calloc()
の構文に従って、つまり
void *calloc (size_t number_of_blocks, size_t size_of_each_block_in_bytes);
2つのパラメーターを受け取ります。ブロックの数と1つのブロックのサイズのため、メモリ配列をnoに割り当てます。あなたが提供するブロックの。