2011-06-13 163 views
-2

我有一个继承的类类型的对象(说这是B型,它从A继承),我怀疑它的vptr被损坏,由于缓冲区溢出某处系统。我认为这是因为在运行时当试图访问该对象的公共方法时,我有时会得到“访问冲突”。的vptr和缓冲区溢出问题

A.任何想法? B.我得到一个指向对象A的指针,作为我尝试访问它的方法的一个参数。如果确实vptr被损坏了,我可以通过试图对A指针执行dynamic_cast来将它用作B来验证它,并且希望它在vptr有问题的情况下失败?

谢谢

+2

我有几个问题:1。 哪种语言? 2.您的应用程序的多线程,这样传递给方法的对象正在被另一个线程写入,同时您尝试访问它? 3.是不是在您的应用程序在不同的机器上分布的情况下,这个对象是类型转换从网络接收缓冲区后产生的? – 2011-06-13 13:11:39

+6

你需要展示一些代码来展示你在说什么。 – 2011-06-13 13:12:05

+0

@Ozair:这几乎肯定是C++(这就是我重申这个问题的原因)。我也几乎可以肯定,OP面临的问题比您列出的场景更简单。 :-) – 2011-06-13 13:14:28

回答

1

广告A:尝试使用dumaelectric-fence库调试缓冲区溢出。

广告B:是的,如果vptr的损坏,将dynamic_cast将失败就可以了。