我有一個B類,它繼承了帶有一些虛函數的類A. B類也有一個虛擬函數(foo),似乎沒有地址。當我用調試器走時,它指出foo有0x00000000
地址,當我嘗試加入時,它將在0x00000005
處因訪問衝突而失敗。如果我讓這個函數不是虛擬的,調試器就會進入並且工作正常,直到我達到std::vector
。在我撥打push_back
時,它將在地址0x000000005
處出現相同的訪問衝突,同時在地址0xabababab
處寫入一些內容,並且調用堆棧指向插入函數中的互斥鎖。C++罕見的運行時錯誤
注意:我沒有使用任何其他線程,每次編譯時增量鏈接器都會崩潰。只有完整的鏈接器才能成功創建exe。編譯器來自Visual Studio 2008專業版,當解壓出未使用的源文件和源代碼時,就會出現此問題。
不幸的是,我無法恢復到以前的狀態,以便發現創建這個的變化。
如何在不恢復整個項目的情況下檢測問題的根源?也有人遇到這種錯誤,也許這可能是同一原因。
給我們一些代碼。 –
最可能的原因是您通過空指針調用成員函數。 – sharptooth
我正在使用調試器,但它未能給我任何相關信息。指針不爲空,不幸的是我不能給你任何源代碼。 – Raxvan