void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);
首先是malloc
,其原理是向堆区申请一块内存,
如果分配成功:则返回指向被分配内存空间的指针
不然,返回空指针NULL。
而calloc则是在malloc的基础上对其分配的内存进行了初始化(一般都是0)
而realloc则是在malloc的基础上增加了调整其内存空间大小的功能,如果调整后如果调用成功,不管当前内存段后面的空闲空间是否满足要求,都会释放掉原来的指针,重新返回一个指针,虽然返回的指针有可能和原来的指针一样,即不能再次释放掉原来的指针。
如果当前内存段后有足够的空间,realloc()返回原来的指针。
如果当前内存段后有足够的空间,realloc()返回原来的指针。
我们在动态内存分配完后要尽量对其free并进行NULL的赋值。