C 和 C++ 上下文中的激活记录是什么?

2024-04-02

它意味着什么以及了解它对于 C/C++ 程序员有多重要?

至少在概念上,跨平台是否相同?

我将其理解为一个分配的内存块,用于通过函数存储局部变量......

我想了解更多


激活记录是堆栈帧的另一个名称。它是组成调用堆栈的数据结构。它一般由以下几部分组成:

  • 被叫方的本地人
  • 返回地址给调用者
  • 被调用者参数
  • 前一个堆栈指针 (SP) 值

因此,调用堆栈由任意数量的激活记录组成,这些激活记录在添加新子例程时添加到堆栈中,并在它们返回时(通常)从堆栈中删除。

元素的实际结构和顺序是由平台甚至实现定义的。

对于C/C++程序员来说,基本知识此结构的详细信息对于理解某些实现功能(例如调用约定)以及为什么缓冲区溢出允许运行第 3 方恶意代码非常有用。

A more 成竹在胸将进一步深化上述概念,并且即使在没有调试器或调试符号的情况下,也允许程序员调试其应用程序并读取内存转储。

但更一般地说,C/C++ 程序员可能会在业余编程生涯的大部分时间里甚至没有考虑过调用堆栈。

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

C 和 C++ 上下文中的激活记录是什么? 的相关文章

随机推荐

  • 如何在 Dart 中构建单例?

    单例模式确保只创建一个类的一个实例 我如何在 Dart 中构建它 感谢达特工厂建造者 https www dartlang org guides language language tour factory constructors 构建单
  • Flutter本地数据库存储

    目前我正在创建一个用户注册标准 它有三个注册页面 对于每次完成的用户注册页面 我想将其存储在本地存储中 如果用户在第 3 级注册之前关闭应用程序 我想显示已完成页面的输入详细信息 而无需调用 api 那么 这是在 flutter 中本地存储
  • 中断 (n)curses 获取传入信号

    我的一个程序使用 ncurses 来绘制一个小 tui 我的目标之一是使其能够移植到其他诅咒实现中 这意味着我想捕获终端仿真器在调整大小操作时发出的 SIGWINCH 并更新我的 tui 以遵循更改后的几何形状 而不依赖于 ncurses
  • 如何使用 C# 将其他系列添加到 Excel 图表

    I am trying to add an additional data series to the chart this shows CPU threshold I can get the range and create the gr
  • SSRS字体在哪里安装?

    简单的问题我找不到简单的答案 我正在使用报告服务器生成报告 并且报告使用自定义字体 我的问题是我需要在所有将运行报告的计算机上安装自定义字体还是仅在服务器上安装自定义字体 该公司使用SSRS 2008 只有在报告服务器上安装字体然后启用字体
  • 使用jquery保存元素的所有css属性

    我基本上试图将元素的所有当前 css 属性保存在本地 var array 中 我试过 el css and el css 没有运气 有什么快速的技巧吗 demo http so lucafilosofi com save all css p
  • 尝试访问 ViewSet 创建定义中的 request.data 时出现 KeyError 'id'

    我最近从 drf 2 4 升级到 v3 并一直在尝试覆盖def Create在我的一个视图集中 但是 当尝试访问我保存到序列化器变量的 request data 时 我会收到错误 KeyError at api appointments i
  • Ruport - “”的未定义方法“each”:String

    我正在遵循本教程中的第一个示例 http ruportbook com printable documents html http ruportbook com printable documents html 但我一直得到 String的
  • 是否可以控制从 matplotlib 颜色图中检索哪些颜色?

    我想将图中的颜色分配给由整数表示的标称数据 我想从定性颜色图中绘制颜色 特别是我想从 Set3 中绘制五种颜色 问题是我想使用前五种颜色 但颜色映射器对我的数据进行标准化 五个分类值的范围从 1 到 5 并从 12 种颜色中选择第 1 4
  • 如何使用 hooks 覆盖 Material ui 样式

    我尝试使用类名使用 React Hooks 和 Material Ui 创建剪切到页面顶部的 AppBar 并将鼠标悬停在其他抽屉上 全部如以下所述 https material ui com demos drawers clipped u
  • 在顶点着色器中指定 3D 渲染目标的目标层? [HLSL]

    在 HLSL Directx11 中工作时 我发现有两种绑定 3D 渲染目标的方法 要么绑定整个目标 要么在指定图层时绑定它 如果绑定整个目标 如何在 HLSL 代码中指定应用输出颜色的图层 我怀疑这需要几何着色器 这是正确的吗 是否有任何
  • 两个 NFC 标签分别链接到项目中的两个不同活动?

    我正在做一个 NFC 应用程序 想知道这种情况是否可能 假设我在一个项目中有 2 个 NFC 标签和 2 个活动 写入NFC A以打开Activity A 方法是将NFC A中的MIME类型写入为 application com examp
  • 投票与推送 - 有什么理由避免推送通知?

    我刚刚作为 技术 产品经理继承了一个 Android 应用程序项目 该项目使用5 秒计时器轮询远程 URL查看应用程序启动的某些工作是否已完成 我最初的反应当然是建议用推送 通知机制替换它 最好是Android内置的GCM 这样工作就从手机
  • 在节点中使用redis获取hash key的所有字段和值

    红色是使用哈希 我需要存储具有多个字段和值的哈希键 我尝试如下 client hmset Table1 Id 9324324 ReqNo 23432 redis print client hmset Table1 Id 9324325 Re
  • Latex Beamer:防止一次性显示 TOC

    通常我使用 AtBeginSection begin frame
  • 使用 FOR XML PATH 时如何删除嵌套查询中的冗余命名空间

    UPDATE 我发现有一个针对此问题提出的 Microsoft Connect 项目here https connect microsoft com SQLServer feedback details 265956 使用时FOR XML
  • 如何使用 mysqli API 制作完全动态的准备语句?

    我需要更改此查询以使用准备好的语句 是否可以 查询 sql SELECT id title content priority date delivery FROM tasks op title content priority date d
  • 对存在同名类型的变量使用 sizeof 是否定义良好?

    这是明确定义的行为还是未定义 以其他方式定义foo 数据类型或标识符 sizeof将在 上运行 typedef int foo int main int argc char argv char foo printf u r n sizeof
  • Docker 不断安装错误版本的 Python

    我在从 NVIDIA 的 CUDA 11 8 基础映像中提取后安装 Python 然而 尽管安装了 Python 3 10 Docker 却告诉我它正在使用 Python 3 8 我的 Docker 文件如下 FROM nvidia cud
  • C 和 C++ 上下文中的激活记录是什么?

    它意味着什么以及了解它对于 C C 程序员有多重要 至少在概念上 跨平台是否相同 我将其理解为一个分配的内存块 用于通过函数存储局部变量 我想了解更多 激活记录是堆栈帧的另一个名称 它是组成调用堆栈的数据结构 它一般由以下几部分组成 被叫方