1. 程式人生 > >指標引起的崩潰分析

指標引起的崩潰分析

指標引起的崩潰問題,常見的原因如下:

指標未判空

勞資還沒幹貨呢,你就讓勞資幹活了。
這種情況實際專案當中是非常多的,即使你用了智慧指標,也還是無法避免。當工程很龐大複雜而且一個類都有可能多個人負責的時候,那麼這個指標的訪問堆疊確實千變萬化,你無法確定是哪裡調到這裡來的,也就無法確保該指標一定指向了某一物件,當然判空不一定能解決這類問題的邏輯錯誤,但是至少能保證不會在這裡崩潰。

指標野了

野孩子還到處亂跑,不出問題才怪。
野指標的原因有簡單的也有複雜的,單執行緒內這個問題其實很好解決,怕的就是多執行緒,多處都存在釋放這個物件的可能,偶現了崩潰直接看程式碼根本無法確定是哪裡多管閒事釋放了該物件,而此時的dump檔案也無能為力,因為dump也無法告訴你這個物件到底是在哪裡釋放了,只能告訴你在這裡指標野了,崩潰了。遇到這類偶現問題,一個好的方案是可以打出一個測試版本,在所有釋放該物件的地方強制崩潰,這樣就有可能捕獲到是哪個小婊砸在意料之外釋放了。僅供參考的一個小技巧。

虛表被玩兒壞了

當然這種說法是欠準確的,你一個類的虛表被破壞了那可真是奇了個葩,更多可能是虛指標亂了,有可能你“任性”的做了型別轉換,導致這個指標根本不應該訪問那個類的虛擬函式,但是強制型別轉換用的又是如此的順手,只能祈禱你自己編碼更加規範,思路更加嚴謹了。另一個原因,就是其他地方越界了,非法寫入導致這個指標內容被破壞了,這時候不崩潰才怪呢。