动态内存分配概述C语言的所有操作都是基于内存的。变量和数组是内存的别名。如何分配此内存由编译器在变异期间确定。比如在定义数组的时候必须指定数组的长度,所以数组的长度必须在编译的时候就确定下来。但有时程序在运行时,可能需要使用一些额外的内存空间。malloc和freemalloc分配的内存是一块连续的内存,以字节为单位,没有任何类型信息。free用于将动态内存返回给系统。其原型如下:void*malloc(size_tsize);voidfree(void*p);注意:malloc实际分配的内存可能比申请的略多,但不能以此为准;当请求的动态内存不能满足时malloc返回NULL;当free的参数为NULL时,函数直接返回。所以无论如何在使用malloc时必须检查返回值是否可用。calloc和realloccalloc类似于realloc,可以用于内存申请。原型如下:void*calloc(size_tnum,size_tsize);参数:num申请的内存个数size每个内存块的大小*NULL申请失败,非NULL申请成功,其总空间为num*size。void*realloc(void*p,size_tnew_size);参数:p原内存空间new_size所需的新内存空间返回值:NULL申请失败,非NULL申请成功。从上面可以看出,calloc和realloc都可以返回请求的内存信息,这和malloc是一样的,使用前需要检查返回值是否可用。与malloc不同的是,calloc返回的内存会被初始化为0,而realloc是用来修改原来分配的内存大小的,所以使用realloc的返回值为新分配的内存空间,当第一个参数为NULL时,则realloc等同于malloc。示例如下:#include
