可以知道变量所在的内存部分吗?

2023-12-05

C 程序中有什么方法可以知道变量所在的部分吗?例如:

char*   str     = "Word1";
char    str2[]  = "Word2";


printf("String1: %s | Location: %p\n", str, str);   // <-- would be on the stack
printf("String2: %s | Location: %p\n", str2, str2); // <-- would be in .rodata
etc.

或者是类似的东西readelf or gdb等等,需要查看内存地址位于哪个部分/段?


C 程序不可能绝对确定地知道其变量所在的部分。这就像海森堡不确定性原理一样——仅仅获取变量的地址就可以使其存在于内存中,否则它可以通过优化完全消除。

因此使用readelf or gdb or objdump,他们正在解码实际的可执行文件。

原则上,ELF 标头应该加载到内存中,您可以从中推断出各个部分,并且您可以读取/proc/xx/maps在 Linux 等上,但是......除非真正尝试编写调试器、垃圾收集器等,否则我不会打扰。

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

可以知道变量所在的内存部分吗? 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 如何从 C# 中的 dataTable.Select( ) 查询中删除单引号?

    所以我有一个经销商名称列表 我正在我的数据表中搜索它们 问题是 一些傻瓜必须被命名为 Young s 这会导致错误 drs dtDealers Select DealerName dealerName 所以我尝试替换字符串 尽管它对我不起作
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 如何在 facebook-api 中标记照片?

    我想问是否 如何可以使用 FB API 图形或 REST 来标记照片 我已经成功创建了一个相册并在其中上传了一张照片 但我仍然坚持标记 我已获得权限和正确的会话密钥 到目前为止我的代码 try uid facebook gt getUser
  • Rails 中的“新建”操作如何重定向到“创建”?

    在 Rails 中 我可以使用以下命令自动创建一组用于 CRUD 操作的路由resources在路线文件中 这创造了index new create edit show update并破坏路线 我了解这些路由如何工作的一般流程 通常当调用路
  • Java 如何将音频数据存储在字节数组中。

    谁能告诉我如何将音频文件 au 中的音频数据读取存储到字节数组中 我查看了 Oracle 上的 Java 文档 但我不知道如何使用这些信息来编写程序 我猜测 音频数据 您需要 AU 文件中的音频样本 不包括标头信息和元数据 如果您只想将文件
  • 获取跨域iframe的DOM内容[重复]

    这个问题在这里已经有答案了 我有一个用于跨域网站的 iframe 我想读取 iframe 的 DOM 我相信这是可能的 因为使用检查器 我什至可以修改 iframe 的 DOM 然而 我尝试以各种方式阅读它 都会遇到相同的来源政策 我想要的
  • Azure Devops 管道,用于使用 iPhone 应用程序和 watchos 应用程序构建 ios 捆绑包

    我想使用 Azure Devops 管道来构建 ios 捆绑包 其中包含 iphone 应用程序和 watchos 应用程序 有一个工作区包含 3 个应用程序 一个用于手机 两个用于手表 我的工作区 我的手机应用程序 我的手表应用程序 My
  • 我的组合框不显示我在 VBA 中添加的值

    我正在尝试向用户窗体中的组合框添加选项 当我运行代码时 Excel 不会给出任何错误 但是当用户窗体显示时 它不会显示我之前添加到组合框中的实体 也就是说 当我单击组合框时 它不显示任何选项 只显示一个空白行 就好像没有添加任何项目一样 这
  • 我怎样才能摆脱角度的 $parent

    Here s Plunker 我在带有 ng include 的控制器中有一个外部模板 它根据按钮的单击事件显示和隐藏 它按要求工作 但在 ng include 模板中使用 parent 还有其他更好的方法吗 Html div div di
  • 如何从 C++ 生成均匀分布在 0 和 1 之间的随机双精度数?

    如何从 C 生成均匀分布在 0 和 1 之间的随机双精度数 当然我可以想到一些答案 但我想知道标准做法是什么 良好的标准合规性 随机性好 速度好 对于我的应用程序来说 速度比随机性更重要 多谢 PS 如果重要的话 我的目标平台是 Linux
  • Node.js:从不同域加载页面的 html

    我想知道如何加载托管在不同域上的 HTML 我正在使用 JavaScript 并且想要创建一个书签 以便我能够解析外部 HTML 我已经在谷歌上搜索了几个小时 但毫无结果 JavaScript 不允许发出跨域请求 这是一个很大的安全风险 相
  • 不计算列中重复值的值的累积和

    我在 R 中有这样的数据 x lt c 1 2 2 3 4 4 7 8 y lt c 300 200 200 150 100 100 30 20 df lt data frame x y 数据集的累积为 cum df lt data fra
  • 需要帮助防止无限循环。属性设置

    所以我有一个颜色选择器 用户可以使用 RGB 或 HSB 选择颜色 每个值都有滑块 属性 例如 当用户设置红色时 我将计算 HSB 值以反映新的颜色值 当用户设置 Hue 时 RGB 值将从 HSB 值重新计算 但请注意那里有一个循环 当我
  • Azure AD B2C:User.Identity.Name 为 null,但 User.Identity.m_instance_claims[9] 具有名称

    用户通过我的 Azure AD B2C Web 应用程序身份验证后 我尝试检索User Identity Name 然而 它是空的 然而 User Identity m instance claims 9 如下面的屏幕截图所示 确实具有正确
  • 如何以编程方式隐藏选项卡栏,然后展开视图以适合

    我从这个问题中得到了代码 如何以编程方式隐藏 UITabBarController 这很棒 但是视图现在无法扩展以适应选项卡栏留下的空间 我已经为视图设置了适当的 UIViewAutoresizingMasks 但我假设仅仅因为它的隐藏并不
  • 如何在文本按钮上放置图标?

    我想在同一个按钮上同时显示图像图标和文本 例如在 Word 中 我在按钮上设置了图标 但文本消失了 HANDLE hBmp HBITMAP LoadImage g hDllInstance MAKEINTRESOURCE IDB BITMA
  • 如何在 Spark 中设置 ORC 条带大小

    我正在尝试在 Spark 2 3 中生成数据集并以 ORC 文件格式编写 我正在尝试设置 ORC 条带大小和压缩大小的一些属性 我从中得到了暗示this所以帖子 但 Spark 不尊重这些属性 并且生成的 ORC 文件中的条带大小比我设置的
  • PHP:如何识别并更改数组中的重复值?

    好的 在 php 数组中有很多重复检测和删除的示例 使用 array unique 等 但是如果您想查找重复项 修改它们 再次循环检查直到所有重复项现在都是唯一的 该怎么办 我认为这就像使用 array filter 所以作为一个更具体的示
  • TFS:构建具有多种配置的解决方案

    设想 在 TFS 2013 上 我必须构建 300 多个项目 C 和 VC 分为大约 40 个解决方案 有些项目有多个发布和调试配置 例如一个项目可能有 3 个发布配置 如版本 1 版本 2 版本 3 x86 版本 4 x64 等 要求 我
  • 这是使用 Python 3 unittest 测试 stdout 的正确方法吗?

    假设我有一个提交文件 fileFromStudent py 其中唯一的内容是 print hello world 我想测试标准输出 看看学生是否正确写出了打印语句 根据我所读到的内容 我已经能够创建以下代码 from io import S
  • 序列化多态接口

    我希望从其关联的接口序列化一个多态类 这是我发现的这个问题 它似乎做了我需要做的事情 如何在Boost Serialization中创建序列化接口 然而 序列化是从类本身而不是接口完成的 到目前为止我得到了什么 网络消息 hpp using
  • 可以知道变量所在的内存部分吗?

    C 程序中有什么方法可以知道变量所在的部分吗 例如 char str Word1 char str2 Word2 printf String1 s Location p n str str lt would be on the stack