程序运行中动态分配内存,也就是从堆上分配内存,涉及到3个函数malloc()、realloc()、calloc()。
1、malloc()
函数原型: void * malloc( unsigned size);
功能:分配一块长度为size个字节的连续区域。不进行初始化。可使用menset()初始化。
返回值:该区域的首地址。可以将void*强制转换为需要的指针类型。
2、calloc()
函数原型:void * calloc( unsigned n, unsigned size);
功能:申请n个,每个占size个字节的内存空间。分配的内存全部初始化为0.
返回值:该区域的首地址。可以将void*强制转换为需要的指针类型。
3、realloc()
函数原型:void * realloc( void * p, unsigned size);
功能:将指针p所指的已分配内存区的大小改为size. 也就是给已分配了地址的指针重新分配空间。
malloc和calloc异同:
同:两者都是动态分配内存。
异:第一,malloc不对分配的空间进行初始化,已分配的内存中可以是任意的值;calloc将分配的内存初始化为0.
第二,malloc返回的是一个对象,calloc返回的是一个数组(n个size大小的空间,返回数组首地址)