当前位置: 首页 > news >正文

栈帧浅析,堆栈漏洞概述——【太原理工大学软件安全期末补充】

在上一篇文章中我说实验一不重要,确实没必要完全按照实验内容逐字逐句理解,但是这里我们补充一个知识点

栈帧(Stack Frame)是计算机程序执行过程中,调用栈(Call Stack)中的一个单元,它包含了函数调用时的上下文信息。每当一个函数被调用时,一个新的栈帧就会被创建并被推入调用栈。栈帧通常包含以下信息:

1. **返回地址**:函数执行完毕后,控制权返回到调用者的地方的地址。
2. **局部变量**:函数内部定义的局部变量,它们只在函数的作用域内可见。
3. **参数**:传递给函数的参数值。
4. **寄存器保存**:在某些情况下,函数调用可能会保存一些寄存器的值,以确保它们在函数执行期间不会被覆盖。
5. **栈指针**:指向当前栈帧的指针。

当函数执行结束时,它的栈帧会被弹出调用栈,控制权和状态会恢复到调用它的函数的栈帧。这个过程是程序流程控制的基础之一,确保了函数调用的有序性和数据的隔离性。

缓冲区

程序中所使用的缓冲区可以是堆区和栈区,也可以是存放静态变量的数据区。

### 栈溢出(Stack Overflow)
1. **定义**:栈溢出发生在程序的调用栈超出其分配的内存空间时。调用栈用于存储函数调用的上下文信息,包括局部变量、参数、返回地址等。
2. **原因**:通常是由于递归调用太深或循环调用太频繁,导致栈空间被耗尽。

### 堆溢出(Heap Overflow)
1. **定义**:堆溢出发生在程序的堆内存超出其分配的内存空间时。堆用于动态内存分配,存储程序运行时创建的对象和数据结构。
2. **原因**:可能由于程序中存在内存泄漏(未释放不再使用的对象),或者分配了过大的内存块,导致堆空间耗尽。

就这些,不多。

相关文章:

  • HarmonyOS开发日记 :自定义节点,实现 UI 组件 动态创建、更新
  • 279 基于matlab的粒子群集法对铁路电能质量控制系统的容量避行优化设计
  • 一文读懂OpenGVLab带来的最新视觉预训练框架
  • 【idea】解决springboot项目中遇到的问题
  • 智能网站管理系统
  • C语言运算中的临时匿名变量
  • JY-156/1静态电压继电器 板前接线 约瑟JOSEF
  • 人工智能中实现自动化决策与精细优化的核心驱动力
  • MySQL:概念、逻辑与物理结构设计详解
  • 【npm】console工具(含胶囊,表格,gif图片)
  • Http协议:Http缓存
  • VST3音频插件技术介绍
  • RequestHeader 异常拦截机制
  • 软考阅卷将完成?!软考成绩有望六月底公布!
  • Nginx缓存之web缓存配置
  • dva中组件的懒加载
  • git 常用命令
  • Git同步原始仓库到Fork仓库中
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • leetcode讲解--894. All Possible Full Binary Trees
  • SAP云平台里Global Account和Sub Account的关系
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 网络应用优化——时延与带宽
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # 数据结构
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #Linux(make工具和makefile文件以及makefile语法)
  • #每日一题合集#牛客JZ23-JZ33
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (分布式缓存)Redis持久化
  • (分享)自己整理的一些简单awk实用语句
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • :如何用SQL脚本保存存储过程返回的结果集
  • @AliasFor注解
  • @SentinelResource详解
  • @Transactional 竟也能解决分布式事务?
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [<事务专题>]
  • [100天算法】-实现 strStr()(day 52)
  • [2669]2-2 Time类的定义
  • [Android] Amazon 的 android 音视频开发文档
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [bzoj1912]异象石(set)
  • [C#]扩展方法
  • [C++]类和对象【下】
  • [Head First设计模式]策略模式
  • [HNOI2015]实验比较