机器内存还有很多,程序为什么仍会栈溢出?这一集从一次递归遍历崩溃出发,讲清函数调用如何形成栈帧,以及调用深度、局部变量和线程栈大小怎样共同决定故障边界。
还会解释 Linux 的按需分配、保护页、段错误与备用信号栈,并给出环检测、深度限制和显式工作栈等实际修复方法。
重点内容:
- 返回地址、局部变量为何占用栈空间
- 递归深度与单个栈帧大小的关系
- 主线程栈和工作线程栈有什么区别
- 保护页如何及时发现栈越界
- 为什么机器有空闲内存仍会崩溃
- 如何定位并修复栈溢出
英文词对照:
- Stack:栈
- Stack Frame:栈帧
- Stack Overflow:栈溢出
- Return Address:返回地址
- Call Convention:调用约定
- Guard Page:保护页
- Segmentation Fault:段错误
- Recursion:递归
- Alternate Signal Stack:备用信号栈
