静态区,堆,栈
静态区:保存自动全局变量和static 变量(包括 全局和局部static变量)。静态区的内容在整个程序的生命周期内都存在,由编译器在编译的时候分配。
栈:保存局部变量和函数形参。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。
堆:由malloc 系列函数或new 操作符分配的内存。其生命周期由free 或delete 决定。堆是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的, 而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存 。由此可见,堆获得的空间比较灵活,也比较大。