在C语言中,根据数据在内存中存在的时间(生存期)不同,将内存空间分为三个区:
1.程序区:用于存储程序的代码,即程序的二进制代码;
2.静态存储区:用于存储全局变量和静态变量,这些变量的空间在程序编译时就已经分配好了;
3.动态存储区:用于在程序执行时分配的内存,又分为:堆区(heap)和堆栈区(stack)两种。
堆区:用于动态内存分配,程序运行时由内存分配函数在堆上分配内存。在C语言中,只要使用指针才能动态的分配内存。
堆栈区:在函数执行时,函数内部的局部变量和函数参数的存储单元的内存区域,函数运行结束时,这些内存区域会自动释放。
http://www.cnblogs.com/hello--the-world/archive/2012/05/31/2528326.html,这个文章不错!