C标准库提供了一个称为malloc程序包的显式分配器。程序通过调用malloc函数来从堆中分配块。
#include <stdlib.h>
void *malloc(size_t size);
//返回:若成功则为已分配的指针,若出错则为NULL
malloc函数返回一个指针,指向大小为至少size字节的内存块,这个块会为可能包含在这个块内的任何数据类型做对齐。实际中,对齐依赖于编译代码在32位模式还是64位模式中运行。在32位模式中,malloc返回的块的地址是8的倍数。在64位模式中,该地址是16的倍数。
如果malloc遇到问题,那么它就返回null,并且设置errno。
malloc不初始化它返回的内存。那些想要初始化的动态内存可以使用calloc,calloc是基于malloc的瘦包装函数。
程序是通过free函数来释放已分配的堆块。
#include <stdlib.h>
void free(void *ptr);
//返回:无。