malloc()与calloc()的相同点
两者都是常用的内存分配函数,用于动态分配内存
两者返回值类型都为void*,需要强制转换为所需类型
使用完分配的内存后,都需使用free()函数来释放该内存,防止内存泄漏
malloc()与calloc()的不同点
malloc()函数:
函数原型为void* malloc(size_t size),接受一个参数size,表示要分配的字节数
malloc()函数不会对分配的内存进行初始化
calloc()函数:
函数原型为void* calloc(size_t num, size_t size),num为块数,size为每块的字节数
calloc()函数对分配的内存进行初始化,所有字节都设置为零
代码段
#include<stdio.h>
#include<stdlib.h>
int main()
{
// malloc()函数
int * ptr1 = (int *)malloc(10 * sizeof(int));
for(int i=0; i<10; i++)
ptr1[i] = i;
for(int i=0; i<10; i++)
printf("%d ", ptr1[i]);
puts("");
free(ptr1); // 释放内存
// calloc()函数
int * ptr2 = (int *)calloc(10, sizeof(int));
for(int i=0; i<10; i++)
ptr2[i] = i + 100;
for(int i=0; i<10; i++)
printf("%d ", ptr2[i]);
puts("");
free(ptr2); // 释放内存
return 0;
}