在Visual Studio for C ++中,我们多次获得调试器中可见的类的vfptr或vptr地址。在Visual Studio中,我们还可以通过内置的内存视图分析线程的内存。 但是可见的信息是二进制的。
是否有某种方法可以通过虚拟指针地址获取有关类类型或任何其他有用信息的更多信息以进行调试?(考虑到我们可以通过Visual Studio中的此地址分析内存本身)
答案 0 :(得分:5)
如果您在 QuickWatch 或变量窗口中展开课程,则可以在ascii中查看类详细信息。
在这里,您可以看到该类的类型为Foo
,并且具有一个虚拟表,其中包含一个名为bar
的函数
答案 1 :(得分:0)
我将它用于我的自定义RTTI。提取vf指针很容易,并且它对每个类都是唯一的(当然,你的类中至少需要1个虚函数)。在visual c ++和最近的gcc和llvm中,它是32位体系结构中类的第一个长字。这样玩是不安全的,如果你没有真正的需要,你可能不应该这样做。