mallocとcallocの違い。
言わずと知れたメモリ確保のためのmallocとcalloc関数。これらの違いをcallocは、0で初期化し、mallocはしないと考えてました。
しかし、callocは’\0’ヌル文字で初期化するのであって、0で初期化するのではありません。ここら辺が、分かっていないとバグの温床となりそうなので、一応記事にしておきます。
mallocとcallocの使い方を書いておきます。結果として、double型をcallocで領域確保したとき、0で初期化されていました。
#include <stdio.h> #include <stdlib.h> #define SIZE 1000 int main(void){ double *xc,*xm; char *str1; xm=(double *)malloc(sizeof(double) * SIZE); str1=(char *)calloc(SIZE,sizeof(char)); xc=(double *)calloc(SIZE,sizeof(double)); printf("%s\n",str1); printf("%lf\n",xc[0]); free(xm); free(xc); free(str1); return 0; }