相同点:
- 都是C语言从堆中申请内存,申请成功的空间必须释放
- 在使用时,返回类型都是void*,在使用时必须进行强制类型转化
- 如果申请失败,返回NULL,在使用时必须判空
不同点:
malloc:void* malloc (size_t size);
说明:向系统申请size字节的内存,成功返回所申请的内存(块)的起始地址,失败返回NULL。 返回值是 void*,void* 类型可以强制转换为任何其它类型的指针,malloc只管分配内存,不对申请的内存进行初始化
calloc:void* calloc (size_t num, size_t size);
说明:在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。
realloc:void* realloc (void* ptr, size_t size);
说明:对内存空间进行调整。ptr指向要调整的空间。根据ptr是否为空分为两种情况: