动态分配函数
索引:
动态分配函数的原型在<stdlib.h>中。
1.calloc
#include <stdlib.h> void *calloc(size_t num, size_t size);
函数分配的内存量等于num * size,即为num个大小为size的数组分配足够内存。分配内存中的所有位被初始化为0。
函数返回一个指针,指向分得的内存区域的第一字节,内存不足以满足请求时,返回空指针。
2.free
#include <stdlib.h> void free(void *ptr);
函数向堆中返回ptr指向的内存,使内存可供将来再分配。
调用该函数的指针必须是先前用动态分配函数所分配而得的,用无效指针调用free()可能摧毁内存管理机制,使系统瘫痪。如果传递一个空指针,则函数不做操作。
3.malloc
#include <stdlib.h> void *malloc(size_t size);
返回一个指针,指向从堆中分配的size个字节内存区的首字节。堆中内存不能满足请求时返回空指针。
4.realloc
#include <stdlib.h> void *realloc(void *ptr, size_t size);
将先前分配的由ptr指向的内存区的大小改为size说明的大小。返回指向新内存区的指针。
如果ptr是空指针,则函数仅分配size个字节的内存,并为其返回一个指针。如果size为0,则释放ptr指向的内存。
如果堆中的空内存不足以分配则返回空指针,原块不变。