堆
堆是由程序员控制的存储块,只能动态分配,可使用的空间可以很大,分配的内存地址是不断增加的,由于多次分配、释放,会产生大量的碎片,导致程序执行效率降低。
栈
栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,因此分配效率高,先进后出的规则不会产生碎片,由编译器自动管理,可用的空间相对较小,局部变量和函数参数存放在该存储区,分配的内存地址是不断降低的。
全局/静态存储区
全局变量和静态变量(static)存储在该区域。
常量存储区
常量存储在常量存储区。