堆和栈的区别Aug 21, 2018内存分配中堆和栈的区别管理方式: 栈由编译器自动管理。 堆由程序员手工管理。 空间大小: 栈一般有1~2M。 32位操作系统堆可以达到4G。 碎片问题: 栈的先进后出的方式导致它不会产生碎片。 堆频繁的malloc/free会产生不连续的空间,造成碎片。 生长方向不同: 栈向下生长。 堆向上生长。 分配效率: 栈由于有就是那几底层支持,效率较高。 堆需要一定算法分配可用内存空间,效率较低。