2011-06-13 114 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將失敗就可以了。