一、什么是内存的动态分配
全局变量是分配在内存中的静态存储区的,非静态的局部变量是分配在内存中的动态存储区的,这个存储区称为“栈”。
C语言中允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区称为“堆”
二、怎样建立内存的动态分配
(1)malloc函数
函数原型
void *malloc(unsigned int size);
作用:是在内存的动态存储区分配一个长度为size的连续空间
注意:形参的类型定义为无符号整型(不允许为负数)
(2)calloc函数
函数原型
void *calloc(unsigned n,unsigned size);
作用:在内存的动态存储区分配n个长度为size的连续空间,这个空间一般比较大
(3)free函数
函数原型
void free(void *p);
作用:释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用
(4)realloc函数
函数原型
void *realloc(void *p,unsigned int size);
作用:重新分配动态空间大小
三、void指针类型
C99允许使用基类型为void的指针类型
注意:不要把指向void类型理解为指向任何的类型,而应理解为指向空类型或不确定向类型