查找主函数局部变量的地址

Posted

技术标签:

【中文标题】查找主函数局部变量的地址【英文标题】:Finding the address of a main function local variable 【发布时间】:2017-01-18 20:40:18 【问题描述】:

假设我们有以下 C 代码:

#include<stdio.h>
int main()
  char *a = "askakasd";
  return 0;

我试图找到我的局部变量“a”,但我不知道如何在此输出中识别它,其中 p 是编译的 C 代码:

【问题讨论】:

它可以被优化出来,因为它从未被使用过。 catb.org/jargon/html/M/mu.html @Arkadiy,你的回答和我的问题有什么关系?不过,这是一篇有趣的帖子。 “您的问题无法回答,因为它依赖于不正确的假设”。此外,阅读《黑客词典》对你的灵魂有好处。 【参考方案1】:

它不在那里。由于代码在执行时无法判断它是否存在,因此链接器将其删除以节省空间。

【讨论】:

所以如果我这样使用,printf("%s", a),仍然不会出现什么。我不得不问你,我怎样才能在 nms 输出中得到一个描述“a”存储位置的行? 您可以将char * a ="askaskasd"; 移到main 之外,强制公开该名称。

以上是关于查找主函数局部变量的地址的主要内容,如果未能解决你的问题,请参考以下文章

局部变量和全局变量

转函数返回局部变量

函数返回局部变量

matlab局部变量和全局变量的区别

PYTHON学习0024:函数---局部变量和全局变量----2019-6-19

作用域链