栈区:栈区空间由编译器自动分配和释放。空间连续且较小(10M以下)。
堆区:堆区空间由程序员动态申请和释放。空间较大且不连续(链表式结构)。
栈区分配空间的效率比堆区更高,因为程序员申请堆区的空间需要借助函数malloc/new,过程比较复杂,而栈区有机器系统提供的数据结构,计算机会在底层对栈提供支持,分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率很高。
注意:
堆区的空间在申请后一定要回收,否则会产生大量内存碎片,造成内存泄漏。
栈区:栈区空间由编译器自动分配和释放。空间连续且较小(10M以下)。
堆区:堆区空间由程序员动态申请和释放。空间较大且不连续(链表式结构)。
栈区分配空间的效率比堆区更高,因为程序员申请堆区的空间需要借助函数malloc/new,过程比较复杂,而栈区有机器系统提供的数据结构,计算机会在底层对栈提供支持,分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率很高。
注意:
堆区的空间在申请后一定要回收,否则会产生大量内存碎片,造成内存泄漏。