1、C语言中的疑惑
C语言中常说“局部变量在栈上分配空间”,那么这个地方的“栈”和我们之前学习的栈数据结构有关系吗?
解答:
- 保存局部变量的栈是函数调用时的栈;
- 程序中的“函数调用栈”是栈数据结构的一种应用;
- 函数调用栈一般是从高地址向低地址增长的
- 栈底为内存的高地址处
- 栈顶为内存的低地址处
- 函数调用栈中存储的数据被称为活动记录
2、什么是活动记录?
活动记录是函数调用时一系列相关信息的记录,猜测它应该是一个结构体!
大体结构如下:
3、函数调用过程示例
4、程序中的栈
- 程序中的栈空间可看做一个顺序栈的应用
- 栈保存了一个函数调用所需的维护信息
- 函数参数,函数返回地址
- 局部变量
- 函数调用上下文
5、程序的栈溢出?
程序的栈溢出是:
在不断的压栈过程中造成栈空间耗尽而产生栈溢出
什么时候会发生程序的栈溢出?
栈溢出常由于函数递归过深或局部数组过大造成!