动态分配函数的核心是malloc()和free()。每次调用malloc()时,均分配剩余的内存的一部分;每次调用free()时,均向系统返还内存。被分配的空内存区中的内存叫做堆(heap)。动态分配函数的原型在<stdlib.h>中。
标准C定义了4种动态分配函数,可以用于所有的编译程序。它们是:calloc(),malloc(),free()和realloc()。
(1)calloc
void *calloc(size_t num, size_t size);
函数calloc()分配的内存量等于num*size,即calloc()为num个大小为size的数组分配足够内存。分配内存中的所有位被初始化为零。
calloc()返回一个指针,指向分得区域的第一字节。内存不足以满足请求时,返回空指针。因此,使用返回指针前,必须先检查它是否为空指针。
//返回指向动态分配的100个浮点数的指针
#include <stdlib.h>
#include <stdio.h>
float *get_mem()
{
float *p;
p=calloc(