版权声明:本文为博主原创文章未经博主允许不得转载。 /CMbug/article/details/
C语言中常说“局部变量在栈上分配空间”那么这个地方的“栈”和我们之前学习的栈数据结构有关系吗?
- 保存局部变量的栈是函数调用时的栈;
- 程序中的“函数调用栈”是栈数据结构的一种应用;
- 函数调用栈一般是从高地址向低地址增长的
- 函数調用栈中存储的数据被称为活动记录
活动记录是函数调用时一系列相关信息的记录猜测它应该是一个结构体!
- 程序中的栈空间可看做一個顺序栈的应用
- 栈保存了一个函数调用所需的维护信息
- 函数参数,函数返回地址
在不断的压栈过程中造成栈空间耗尽而产生栈溢出
什么时候会发生程序的栈溢出
栈溢出常由于函数栈实现递归函数过深或局部数组过大造成!
该函数可通过栈实现递归函数实现字符串的倒序输絀 导致最深层次的栈实现递归函数函数reverse退出,转而回到上一次的栈实现递归函数中 接着执行printf("%c", *s);这就输出了最后一个字符,其余依- 程序栈空間在本质上是一种顺序栈
- 程序栈空间的访问是通过函数调用进行的
- 程序栈空间仍然遵从后进先出的规则