1:malloc的函数原型:void *malloc( size_t size );
2:calloc的函数原型(参数分别为第一个元素数目,第二个元素大小): void *calloc( size_t num, size_t size );
3:realloc的函数原型 (要扩充的参内存大小的指针名,新的大小): void *realloc( void *memblock, size_t size );
区别:
(1)malloc不能初始化所申请的内存空间,而calloc能够。 (2)realloc可以对给定的指针所指的空间进行扩大或者缩小,无论是扩张或是缩小,原有内存的中内容将保持不变.当然,新申请的空间的大小如果小于原来的大小,就会导致数据丢失。 (3)realloc申请的内存后面还有足够多剩余内存的话,realloc的内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内存后面没有足够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存里,原来的内存将被free掉,realloc返回新内存的地址。当给realloc设置的参数指针若为NULL或者0时就相当于malloc的作用 (4)calloc所申请的空间内容初始化,如果你是为字符类型或整数类型的元素分配内存,那么这些元素将保证会被初始化为0;如果你是为指针类型的元素分配内存,那么这些元素通常会被初始化为空指针;如果你为实型数据分配内存,则这些元素会被初始化为浮点型的零.