什么是符号表?

2023-11-27

有人可以描述一下 C 和 C++ 上下文中的符号表是什么吗?


这里的符号表有两个常见且相关的含义。

首先,目标文件中有符号表。通常,C 或 C++ 编译器将单个源文件编译为扩展名为 .obj 或 .o 的目标文件。它包含链接器可以将其处理为工作应用程序或共享库的可执行代码和数据的集合。目标文件中有一个称为符号表的数据结构,它将目标文件中的不同项映射到链接器可以理解的名称。如果您从代码中调用函数,编译器不会将例程的最终地址放入目标文件中。相反,它将一个占位符值放入代码中,并添加一条注释,告诉链接器从它正在处理的所有目标文件中查找各种符号表中的引用,并将最终位置粘贴在那里。

其次,共享库或 DLL 中还有符号表。它由链接器生成,用于命名库用户可见的所有函数和数据项。这允许系统进行运行时链接,将对这些名称的开放引用解析为库在内存中加载的位置。

如果你想了解更多,我推荐 John Levine 的优秀著作《Linkers and Loaders》。链接文本

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

什么是符号表? 的相关文章

  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 如何在 php.ini 中启用 oci8 (Oracle) 扩展 - PHP 警告:PHP 启动:第 0 行未知

    我有 Windows XP 最近安装了 wamp apache mysql php 32 位 我测试了安装 使用 php 和 apache 连接到 mysql 数据库 一切正常 现在我需要连接到 Oracle 数据库 因此我尝试启用一些扩展
  • jquery on 带/不带选择器参数和 jquery delegate 有什么区别?

    我正在使用jquery 1 10 我想知道这三个函数有什么区别 哪个功能更好 为什么 委托功能的目的是什么 dropdown menu on click show opt menu function alert hello dropdown
  • 毕加索图像缓存

    我想下载以下带有毕加索图像缓存的图像下载代码 DownloadImage downloadImage new DownloadImage downloadImage execute advert getImgUrl private clas
  • 在 SwiftUI 中使用时间间隔的 DatePicker

    我想在 SwiftUI 中使用 DatePicker 它工作正常并且符合预期 我想添加一个时间间隔 如所解释的 UIDatePicker 15 分钟增量 Swift DatePicker Please enter a time select
  • 2 个不同的小查询与 1 个带子查询的查询

    我有这样的桌子 name personal number Jon 222 Alex 555 Jon 222 Jimmy 999 我需要获取每个名字 其中个人号码在表中重复超过 1 个 即结果必须是 Jon Jon 因此 变体 1 SELEC
  • Django:覆盖 get_FOO_display()

    一般来说 我不熟悉 python 重写方法和使用 super 的方式 问题是 我可以覆盖get FOO display class A models Model unit models IntegerField choices someth
  • render_to_string 和 response.content.decode() 不匹配

    我正在写我的第一个Django跟随本书一起学习应用程序 http chimera labs oreilly com books 1234000000754 ch05 html passing python variables to be r
  • .htaccess 拒绝所有人不起作用

    我的问题是我想拒绝对文件夹的访问 但我不能 我已经放了一个 htaccess此文件夹中的文件仅包含以下几行 order deny allow deny from all 知道会发生什么吗 我得到它 这是由于 apache 配置造成的 在我的
  • 解决日期时间许可证问题的最佳方法[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 目前我们正在开发一个基于 Windows 的小型应用程序 我们曾经提供为期30天的试用版许可证 30天到期后 该产品将无法使用 现在这是我的问题 想象一下 客户于 1 月 1 日
  • Codeigniter - 会话过期和“记住我”功能

    我正在 Codeigniter 中构建 记住我 功能 通常我会看到库 项目使用令牌在用户上设置 cookie 该令牌会保存在数据库中 并在用户每次访问网站时进行比较 在 Codeigniter 中 我们可以设置会话过期时间 这导致我尝试不同
  • 为什么 System.arraycopy 是 Java 原生的?

    我很惊讶地在 Java 源代码中看到 System arraycopy 是一个本机方法 当然原因是因为它更快 但是代码能够使用哪些本地技巧来使其速度更快呢 为什么不直接循环原始数组并将每个指针复制到新数组 当然这不是那么慢和麻烦 在本机代码
  • Firebase 管理多个身份验证提供商

    我正在开发 Android 应用程序 该应用程序在 Facebook Google 和电子邮件 密码等 Firebase 的帮助下使用多重身份验证 每个身份验证都以不同的方式运作良好 但是 当我使用 google 登录然后注销时 以及稍后当
  • 使用 python 定义 chromedriver selenium 的下载目录

    一切都在标题中 有没有办法定义与 python 一起使用的 selenium chromedriver 的下载目录 尽管进行了很多研究 但我还没有找到结论性的东西 作为一个新手 我已经看到了很多关于 Chromedriver 的 所需功能
  • WPF TabControl 在 SelectionChanged 上,将焦点设置到文本字段

    我有一个选项卡控件和一些选项卡项 我正在成功收听SelectionChanged事件 并检查我感兴趣的选项卡是否是当前选定的选项卡 我正在使用这段代码 如下 并单步执行调试器 我可以看到我的分支逻辑按设计工作 但是 我遇到的问题是有些东西覆
  • ElasticSearch Java 客户端查询嵌套对象

    我如何转换这种查询 query nested path consultations query bool must match consultations prescriptions alfuorism match consultation
  • 在列表视图中滚动地图时如何避免滚动列表视图

    我有一个 ListView 在其顶部有一个地图 我希望当 ListView 滚动时地图滚动到视图之外 但我也希望用户能够与地图交互 因此 滚动应该仅在用户在其他 ListView 小部件上滚动时发生 而不是在他们在地图上滚动时发生 然后我希
  • 如何在运行时将字符串转换为代码

    我正在生成包含的字符串if else表达式 我想知道我是否可以在运行时执行这个表达式 这是一个例子 string s if x gt 10 Fly true else Fly False Execute s 有可能做到这一点吗 可以使用TC
  • Spring MVC 3 中的 Restful 路径参数

    是否可以 在 servlet xml 文件的 mvc view controller 元素或控制器方法中设置 URI 模板 然后使用 获取该路径参数in a jsp 我知道在控制器方法中使用 PathVariable 将使我能够访问路径参数
  • 事件的异常处理

    如果这是一个简单的问题 我深表歉意 我的 Google Fu 今天可能很糟糕 想象一下这个 WinForms 应用程序 它具有这种类型的设计 主应用程序 gt 显示一个对话框 gt 第一个对话框可以显示另一个对话框 两个对话框都有确定 取消
  • 什么是符号表?

    有人可以描述一下 C 和 C 上下文中的符号表是什么吗 这里的符号表有两个常见且相关的含义 首先 目标文件中有符号表 通常 C 或 C 编译器将单个源文件编译为扩展名为 obj 或 o 的目标文件 它包含链接器可以将其处理为工作应用程序或共