在回答完进程的虚拟地址空间布局之后(上一篇),面试官可能抓住堆和栈深入展开。堆和栈的区别①管理方式:栈由编译器自动管理;堆由程序员控制,使用方便,但易产生内存泄露。②生长方向:栈向低地址扩展(即”向下生长”),是连续的内存区域;堆向高地址扩展(即”向上生长”),是不连续的内存区域。这是由于系统用链表来存储空闲内存地址,自然不连续,而链表从低地址向高地址遍历。③空间大小:栈顶地址和栈的最大容量由系统预先规定(通常默认2M或10M);堆的大小则受限于计算机系统中有效的虚拟内存,32位Linux系统中堆内