利用Debug調試代碼解決0xC0000005:?讀取位置?0x0000000000000000?時發(fā)生訪問沖突問題
VS2019利用Debug調試代碼解決0xC0000005: 讀取位置 0x0000000000000000 時發(fā)生訪問沖突
之前一直是使用release發(fā)布代碼模式進行程序編譯,前天突然出現(xiàn)這個問題:
0xC0000005: 讀取位置 0x0000000000000000 時發(fā)生訪問沖突
查找資料發(fā)現(xiàn)大概率是出現(xiàn)了空指針。沒有判斷指針是否為空就進行后續(xù)操作導致的錯誤,但是release模式并沒有提示問題出現(xiàn)在哪里,只是顯示程序崩掉,并且給你錯誤信息,查找資料后發(fā)現(xiàn)Release 稱為發(fā)布版本,它往往是進行了各種優(yōu)化,使得程序在代碼大小和運行速度上都是最優(yōu)的,以便用戶很好地使用,但是會忽略調試信息,這不利于我們進行程序調試。(所以我只憑借經(jīng)驗進行初步調試,但是效率很低也沒有解決實際問題)
而debug配置能夠包含調試信息,并且不作任何優(yōu)化,便于程序員調試程序。
這就方便我們進行程序的調試和斷點設置,設置了斷點就可以看到所有變量的信息。就方便我們找到問題出現(xiàn)在了哪里。
果然,當我將配置改為debug后,運行程序,就會自動顯示下圖所示地方發(fā)生錯誤:為nullptr,空指針。那么問題就顯而易見了。

但是我在上句語句中已經(jīng)獲得了pGalvanometer對象指針,這里不應該是nullptr。所以我在該位置設置斷點,運行后,發(fā)現(xiàn)hr不為S_OK,而是顯示加載有問題,那么很顯然問題出在我加載外部組件COM中了。

但是我并沒有改變COM組件的加載代碼,于是認為可能組件注冊出現(xiàn)問題。于是我重新注冊了一下COM組件。

問題成功解決!
該次經(jīng)歷給我的經(jīng)驗就是在編寫調試代碼時要及時切換為Debug模式,因為Debug會保留調試信息,而且代碼是原汁原味的,不會做任何改變,也方便我們進行調試。我本身并不是計算機專業(yè),所以這些很基礎的經(jīng)驗對我來說也幫助甚大。
到此這篇關于利用Debug調試代碼解決0xC0000005: 讀取位置 0x0000000000000000 時發(fā)生訪問沖突問題的文章就介紹到這了,更多相關Debug調試代碼解決0xC0000005內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言 詳細講解數(shù)組參數(shù)與指針參數(shù)
這篇文章主要介紹了C語言中數(shù)組參數(shù)與指針參數(shù)的分析,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04

