此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。如果分配成功则返回指向被分配内存的指针),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。

如果参数size 为0,malloc的行为是标准是未定义的,取决于编译器。

对应malloc,C语言提供了另外一个函数free,专门是用来做动态内存的释放和回收的,在stdlib.h 头文件中。函数原型如下:

free函数用来释放动态开辟的内存。如果参数ptr 指向的空间不是动态开辟的,那free函数的行为是未定义的。如果参数ptr 是NULL指针,则函数什么事都不做。释放ptr后要将ptr及时指向NULL指针。

C语言还提供了一个函数叫calloc , calloc 函数也用来动态内存分配。malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零。num — 要被分配的元素个数,size — 元素的大小原型如下:

函数的功能是为num个大小为size的元素开辟一块空间,并且把空间的每个字节初始化为0。与函数malloc 的区别只在于calloc 会在返回地址之前把申请的空间的每个字节初始化为全0。

重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。