分配方式:
栈由系统自动分配和释放,用于存放函数的参数值,局部变量值等。堆由程序员分配和释放,若程序员不释放,可能在程序结束时由操作系统回收。
分配效率:
栈的分配效率比堆要高得多,但堆的使用更灵活。
空间大小:
栈是连续的一块内存区域,其空间较小,是在编译时就确定了的,易产生栈溢出。堆的内存区域是不连续的,其空间较大。
碎片问题:
堆的使用容易产生碎片,使程序效率降低。而栈则不存在这个问题。
分配方式:
栈由系统自动分配和释放,用于存放函数的参数值,局部变量值等。堆由程序员分配和释放,若程序员不释放,可能在程序结束时由操作系统回收。
分配效率:
栈的分配效率比堆要高得多,但堆的使用更灵活。
空间大小:
栈是连续的一块内存区域,其空间较小,是在编译时就确定了的,易产生栈溢出。堆的内存区域是不连续的,其空间较大。
碎片问题:
堆的使用容易产生碎片,使程序效率降低。而栈则不存在这个问题。