BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ callocとmallocの違いは何ですか。

 calloc関数とmalloc関数は、いずれもプログラムの実行時に動的に記憶域を確保します。
 10個のint型配列のための記憶域を確保するには、

calloc(10, sizeof(int)); /* calloc(要素数, 要素の大きさ); */

あるいは

malloc(10 * sizeof(int); /* calloc(全体の大きさ); */

のいずれによっても行うことができます。たとえばsizeof(int)2であれば、いずれも20バイトの領域を確保します。
 なお、calloc関数は、確保した領域の全てのビットを0で埋める動作を行うことが、malloc関数との違いです。したがって、整数であれば値が0となることが保証されます(浮動小数点数やポインタに関しては保証されません)。


■ 根拠 ■
標準C §7.10.3 Memory managemnet functions
標準C99 §7.20.3 Memory managemnet functions
標準C++ §20.4 Memory

■ 参照 ■
FAQ mallocに対するcallocのメリットは何ですか。

戻る

BohYoh.comロゴ