在C语言中,用malloc/calloc/realloc/free来进行动态内存管理。
这三者都是在堆上对空间进行开辟,free将申请到的空间释放掉。
malloc只有一个参数,就是需要申请空间的大小,成功返回所开辟空间的指针,失败返回NULL。
void* malloc(size_t size);
calloc有两个参数,第一个参数num表示开辟多少个空间,第二个参数size表示每个空间的大小。所开辟的空间从整体上看是连续的,总共大小为size*num个字节。成功返回所开辟空间的指针,失败返回NULL。与malloc不同的是,calloc会将所开辟的空间默认初始化为0。
void* calloc(size_t num, size_t size);
realloc函数是用来调整已经申请好的空间大小的,因为在对空间的管理过程中,可能对内存大小的要求会有所变动。所以realloc用来完成此功能。realloc也有两个参数,第一个为指向所要调整空间的指针,第二个参数为想要调整的大小。
void* realloc(void* ptr, size_t size);