我有以下难题要解决,我不确定我该怎么做。它说:
有一个Ubuntu Linux C程序,它输出变量的地址。
v1: 0xa156128
v2: 0xff97410c
v3: 0xf750e34b
v4: 0x804a0c0
我知道程序不使用共享内存,并且这些变量中至少有一个是堆变量。这些变量中的哪一个是global
/ local
/ heap
。
所有可用的信息,我真的对解决这个难题的任何想法感兴趣。
阅读评论后编辑:
如果我查看运行时 - 存储组织链接(http://lambda.uta.edu/cse5317/notes/node33.html),v2
和v3
似乎是拥有最大地址v1
的本地变量作为堆变量,因为它位于堆栈和静态数据之间,而v4
是全局变量,它不像运算符那样在运行时在堆栈上声明,而是在.data部分中二进制文件。
答案 0 :(得分:0)
尝试分析/ proc / PID / maps的内容(参见proc(5))。我相信这是确定地址所属内存区域的最正确方法。