重複の可能性:
malloc と calloc の c の違い
calloc には 2 つのパラメーターが必要で、malloc には 1 つしか必要ないのはなぜですか?
多くの C 関数呼び出し、特にメモリまたはファイル操作を扱うものでこれに気付きましたが、すべてが両方のパラメーターを使用しているわけではありません。たとえば、malloc には 1 つのパラメーター (必要なメモリ空間のサイズ (バイト単位)) が渡されます。一方 Calloc には、要素のサイズ (バイト単位) と要素数 (size と nmem) の 2 つのパラメーターが渡されます。これらの size および nmem パラメータを使用する関数は他にもあります。
基本的に、calloc 呼び出しは malloc(nmem size) を呼び出すのと同じ量のメモリを割り当てるため、実際に起こっていることは、アスタリスク ( ) がコンマ (,) に置き換えられることだけです。少なくとも、私が働いているより高いレベルから私が言えることはこれだけです。calloc(1, nmem size)、calloc(nmem size, 1)、calloc(nmem, size)の呼び出しとの違いはわかりません。
インスタンス calloc(1, nmem*size) の呼び出しを calloc(nmem, size) と根本的に異なるものにする、より低いレベルで実際に起こっていることはありますか?
編集: calloc と malloc の機能的な違いを知っています。パラメータに違いがある理由に興味があります。合計サイズに 2 つのサイズ パラメータを使用する関数は他にもあります (fread、fwrite など)。特定の関数には関心がありませんが、基本的に合計サイズが 2 つのパラメーターを掛け合わせたものになるのに、関数で使用される合計サイズに 2 つのパラメーターがあるのはなぜかということです。ほとんどの場合、これらの関数を使用するときは、必要なサイズを「size」パラメーターで使用し、「nmem」(場合によっては「count」など) パラメーターに「1」を使用します。