标签:
栈:局部变量 向下增长
堆:程序员申请内存空间 向上增长 如:p1 = (char *)malloc(10); 堆
p2 = (char *)malloc(20); 堆
堆和栈的区别:栈(英文名称是stack)是系统自动分配空间的,例如我们定义一个 char a;系统会自动在栈上为其开辟空间。而堆(英文名称是heap)则是程序员根据需要自己申请的空间,例如malloc(10);开辟十个字节的空间。由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。而堆上的数据只要程序员不释放空间,就一直可以访问到
静态区:静态变量
只读区:常量,代码 a++是错误的。因为a是数组名,它是数组的首地址,是常量。
栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
标签:
原文地址:http://www.cnblogs.com/namiren/p/4225634.html