Duangw

动态分配函数

索引:

  1. calloc
  2. free
  3. malloc
  4. realloc

动态分配函数的原型在<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指向的内存。

如果堆中的空内存不足以分配则返回空指针,原块不变。