使用实例int*p1(int *)malloc(10*sizeof(int));要计算出指定的字节大小分配给mallocmalloc申请空间成功后不会对空间元素进行初始化int*p2(int*)calloc(10,sizeof(int));告诉calloc要开辟10个元素每个元素int大小calloc申请空间成功后将空间元素全部初始化为0p1realloc(p1,10*sizeof(int));在原有的p1空间上扩大空间或者可以异地扩容当原地空间不够大时如int*p5realloc(p1,10*sizeof(int));注意无论原地扩容还是异地扩容relloc会保证原有的空间数据不被丢失完整保留下来和新数据一起最后总结相同点与不同点集合malloc的特点只分配不初始化1个参数返回void*需要类型转换可能分配失败返回NULL分配的内存是连续的适合需要手动初始化的数据的场景calloc特点分配并初始化为0两个参数元素个数 × 元素大小返回void*需要类型转换比malloc慢需要清零操作适合非手动初始化自动初始化为全0的数组realloc的特点只扩容不初始化两个参数从哪个地方基础上扩容的指针要提供和要扩容的元素大小返回void*需要类型转换有异地扩容和原地扩容无论原地还是异地自动保留旧数据不初始化新数据动态调整大小