拼图 - 确定哪些地址属于全局/本地/堆变量

时间:2016-11-11 21:55:24

标签: c hex memory-address

我有以下难题要解决,我不确定我该怎么做。它说:

有一个Ubuntu Linux C程序,它输出变量的地址。

v1: 0xa156128
v2: 0xff97410c
v3: 0xf750e34b
v4: 0x804a0c0

我知道程序不使用共享内存,并且这些变量中至少有一个是堆变量。这些变量中的哪一个是global / local / heap

所有可用的信息,我真的对解决这个难题的任何想法感兴趣。

阅读评论后编辑:

如果我查看运行时 - 存储组织链接(http://lambda.uta.edu/cse5317/notes/node33.html),v2v3似乎是拥有最大地址v1的本地变量作为堆变量,因为它位于堆栈和静态数据之间,而v4是全局变量,它不像运算符那样在运行时在堆栈上声明,而是在.data部分中二进制文件。

1 个答案:

答案 0 :(得分:0)

尝试分析/ proc / PID / maps的内容(参见proc(5))。我相信这是确定地址所属内存区域的最正确方法。