全局变量是分配在内存中的静态存储区的,非静态的局部变址(包括形参)是分配在内存中的动态存储区的,这个存储区是一个称为栈( stack ) 的区域。
除此以外, C 语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆( heap )区。
可以根据需要,向系统申请所需大小的空间。由于未在声明部分定义它们为变量或数组,因此不能通过变量名或数组名去引用这些数据,只能通过指针来引用。