C ++中的函数是否有可能找到某个范围内所有变量的地址?我在谈论的方法,如扫描程序使用的内存,或查看编译器的解析树。也许在C ++ 11中甚至还添加了一种机制。
这是我一直想知道的一些事情,一些好的答案将不胜感激。
感谢。
注意:应该从程序内部调用代码。
答案 0 :(得分:1)
这是所有调试器都可以做的事情,所以我认为如果程序使用调试信息进行编译并且可以某种方式解析自己的符号表,那么程序就有可能获得该级别的内省。
This project实现了调试信息解析,为C ++生成类内省。我想同样的方法可以用于你的目的。
此外,我怀疑如果您使用优化进行编译,这将是可能的,因为优化器可能会更改您的代码,以至于源代码中的各个变量到内存位置的映射不存在。