数据结构里堆和栈,原理差不多都是先进后出,堆一般是一个二叉树,是非线性,比如堆排序。栈往往是线性。
C语言里堆和栈是操作系统对内存管理实现的两个不同部分。
栈空间是操作系统自己管理,分配,释放也是操作系统做。普通局部变量都存在栈里。
堆区的空间是用户自己分配管理,比如每一次malloc必须自己free。要不然操作系统不会帮你释放。
C语言还有一个代码段,这个区域程序执行后不可写,一般用来存储常量。