おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

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;
}