C语言栈是什么,栈在哪,需要定义吗?

Python014

C语言栈是什么,栈在哪,需要定义吗?,第1张

“栈”是一种后进先出(LIFO,或叫先进后出FILO)的数据结构。这是数据结构的范畴。

您所说的栈,是由操作系统负责管理的一段栈空间,在递归、子程序调用等处应用广泛。这是操作系统的范畴。

——并不是在C语言范畴讨论的概念。

数据结构里堆和栈,原理差不多都是先进后出,但是堆一般是一个二叉树,是非线性,比如堆排序。栈往往是线性。

C语言里堆和栈是操作系统对内存管理实现的两个不同部分。

栈空间是操作系统自己管理,分配,释放也是操作系统做。普通局部变量都存在栈里。

堆区的空间是用户自己分配管理,比如每一次malloc必须自己free。要不然操作系统不会帮你释放。

C语言还有一个代码段,这个区域程序执行后不可写,一般用来存储常量。

答案是会的:系统分配给每个程序的栈空间是有限的,超过了就会堆满。最有代表性的就是递归函数,如果递归的深度达到一定量,程序栈就会满,程序就会异常退出,之前使用快速排序用到递归,当数据量比较大,数据基本有序时递归深度就比较大,程序就停止了,调试错误显示栈资源不足。