malloc&callocの違い


malloccallocはいずれもメモリ空間を申請するために使用することができ、logから見ると、両方の申請は連続した空間である.ただし、malloc申請の空間内の値は不確定であり、calloc申請のメモリ空間にはデフォルト値が付与されます.
#include 
#include 
// malloc & calloc   
int main(void)
{

    const int LEN = 7;
    int * p_nums;
    p_nums = malloc(LEN * sizeof(int));
    *(p_nums +3) = 11;
    printf("malloc         :
"
); for(int i=0; iprintf("%p , %d
"
,(p_nums+i),*(p_nums+i)); } printf("malloc last - start = %d
"
,(p_nums+LEN -1 - p_nums)); int * p_arr = calloc(LEN,sizeof(int)); *(p_arr +4) = 901; printf("

calloc :
"
); for(int i=0; iprintf("%p , %d
"
,(p_arr+i),*(p_arr+i)); } printf("calloc last - start = %d
"
,(p_arr+LEN -1 - p_arr)); free(p_nums); free(p_arr); return 0; }

console log:
malloc         :
00520d30 , 5383256
00520d34 , 5377296
00520d38 , 1766203502
00520d3c , 11
00520d40 , 1347243843
00520d44 , 1380275285
00520d48 , 1162690894
malloc last - start = 6


calloc         :
00520d58 , 0
00520d5c , 0
00520d60 , 0
00520d64 , 0
00520d68 , 901
00520d6c , 0
00520d70 , 0
calloc last - start = 6