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