为什么在访问整数时缓冲区溢出会导致分段错误?

2023-12-13

在函数 A() 调用函数 B() 期间,B() 分配一个 100 个字符的数组并多次填充它,其中一次使用 101 个字符的字符串,一次使用 110 个字符的字符串。这是一个明显的错误。

随后,函数 A() 尝试访问完全不相关的 int 变量 i,并发生分段错误。

我明白为什么会发生缓冲区溢出,但是为什么当我访问这个整数时会出现分段错误?为什么我不简单地获取垃圾数据?


缓冲区溢出可能会破坏堆栈上先前保存的帧指针版本。 当函数返回时,这个损坏的版本将被加载到帧指针寄存器中,从而导致您所描述的行为。

维基百科的页面包含一个图和定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在访问整数时缓冲区溢出会导致分段错误? 的相关文章

随机推荐

  • 如何使用OpenCV裁剪圆形图像?

    我想知道 openCV 中是否有一种方法可以让我在两个圆之间裁剪图像 从而忽略较小内圆中的所有内容和较大圆之外的所有内容 就像甜甜圈的形状 这是在 Python OpenCV 中执行此操作的一种方法 读取输入并获取其尺寸 定义两个圆的半径和
  • 右键单击节点上的 JTree 和下拉选项

    我正在尝试使用 JTree 并为所有父节点和子节点实现不同的下拉列表 这是我所做的 pmTree addMouseListener new java awt event MouseAdapter Override public void m
  • 我无法在 .net (vb.net) webbrowser 控件中使用 websocket

    我正在尝试在 Webbrowser 控件内运行网页 其中包含与 Websocket 的连接 该控件无法连接到 Websocket 当我在IE中测试时 一切运行正常 但在Visual Studio内的Webbrowser控件中 页面无法连接到
  • 在未连接的计算机上使用 git

    我有时会在两台未连接的计算机上进行开发的项目 一个典型的例子是在 BIDS 中创建报告 工作流程如下所示 我在公司 TFS 中创建一个项目 文件夹 使用git tfs创建本地git仓库 开发报告并提交到本地存储库 以及一些到 tfs 的签入
  • 在嵌套 JAR 内的文件夹中查找文件名

    当我的应用程序打包为 JAR 时 我无法访问目标文件夹 images 我不是在获取单个文件后 我想要的是 images 文件夹中所有 jpg 文件的列表 我试过这个 URI uri getClass getClassLoader getRe
  • 如果段错误不可恢复,为什么将其称为错误(而不是中止)?

    我对术语的以下理解是这样的 1 中断是由硬件发起的 通知 用于调用操作系统运行其处理程序 2 陷阱是由软件发起的 通知 用于调用操作系统运行其处理程序 3 故障是处理器在发生错误但可恢复时引发的异常 4 中止是处理器在发生错误但不可恢复时引
  • 为什么 ksh 中的以下 IF 条件总是评估为 true?

    考虑一下 下面的代码按预期工作 if SOME VARIABLE TRUE then echo Only echoed when SOME VARIABLE stores string TRUE fi 但是当我删除相等运算符周围的空间时 它
  • struts2中如何禁止缓存?

    在我的 Web 应用程序中 当用户注销时 他不应该访问他之前登录时查看过的页面 但是 由于浏览器缓存 他可以在单击后退按钮时查看这些页面 我定义了一个拦截器来处理这个问题 public String intercept ActionInvo
  • boost::unordered_map 中的迭代器失效

    我在用boost unordered map如下 typedef boost shared ptr
  • 将二进制文件读入字符串

    这一定是显而易见的 但我无法弄清楚 为此我花了几乎一整天的时间 我很乐意给能让我放松的人买瓶啤酒 File file new File filePath byte bytes new byte int file length DataInp
  • R 图频率分布

    如何在 R 中绘制频率分布 我不想对值进行分类 我只想绘制每个值的频率 这hist函数坚持分箱值 除非我手动指定分箱 真的很乏味 因为我事先不知道这些值 你可以plot the table您的数据 xx lt sample 1 10 100
  • 如何从 crm 中的插件注册恢复我的插件数据?

    将程序集更新为插件注册时 在第 2 步 选择要注册的插件和工作流程活动 如果没有选择所有插件 它们将连同插件注册中的步骤和图像一起删除 有没有办法恢复已删除的插件 是否有 XML 或文件可以帮助恢复步骤和图像 如果您有较早的解决方案备份或通
  • 我可以创建从网络上的 UNC 路径复制文件的安装程序吗?

    是否可以创建 Inno Setup 脚本来从网络上的 UNC 路径复制文件 而不是静态地将它们添加到安装文件中 如果是这样 如果我需要先对路径进行身份验证 还可以吗 Inno Setup 脚本中是否有提供身份验证信息的机制 本质上 我希望安
  • Python 导入 MySQLdb 错误 - Mac 10.6

    我下载并按照 MySQL 5 5 8 的安装说明进行操作 http dev mysql com downloads mysql 以及 MySQLdb python 插件 http sourceforge net projects mysql
  • PDO 多个查询:提交和回滚事务

    我需要触发 2 个查询 目前我正在这样做 Begin Transaction this gt db gt beginTransaction Fire Queries if query one gt execute if query two
  • 如何在 Azure 搜索中忽略重音符号?

    Azure 搜索是否支持某种忽略重音字符的方式 例如 如果有人搜索e它应该包括 搜索中的字符 或者我们是否需要在构建 Azure 搜索索引时添加一些转换 欢迎任何建议 谢谢 是的 请在您的现场使用 ASCII 折叠分析仪 为此 请将字段上的
  • Entity Framework 5 和 Amazon RDS - “底层提供程序在 Open 时失败。”

    我有一个 C Entity Framework Web 应用程序 可以在本地 SQL 2012 数据库上正常运行 我将数据库复制到新的 RDS 实例 并且可以通过 Visual Studio 和 SQL Server Management
  • PHP 不区分大小写和重音的数组搜索

    我有一个包含单词的数组 其中一些带有重音符号 我想测试给定的单词是否在该数组中 但使其不区分大小写和重音 例如 array array coche cami n moto carro 我想要一个简单的小功能 比如in array 如果我的字
  • 您可以在 WPF 应用程序中使用 jQuery 吗?

    在过去的几个月里 我一直在创建一个 WPF 应用程序 我想向我的应用程序添加一些动画 之前有人告诉我 jQuery 是一个很好的用于动画的 Javascript 库 问题是 环顾四周后 互联网上没有太多东西让我知道这是否可行 我对 jQue
  • 为什么在访问整数时缓冲区溢出会导致分段错误?

    在函数 A 调用函数 B 期间 B 分配一个 100 个字符的数组并多次填充它 其中一次使用 101 个字符的字符串 一次使用 110 个字符的字符串 这是一个明显的错误 随后 函数 A 尝试访问完全不相关的 int 变量 i 并发生分段错