定義指針時未賦值導致出現“0xC0000005: 讀取位置 0x00000000 時發生訪問衝突”問題

問題描述:

0x0FB91BC0 (ucrtbased.dll)處(位於 five.exe 中)引發的異常: 0xC0000005: 讀取位置 0x00000000 時發生訪問衝突。
在這裏插入圖片描述

emmm,這個問題呢,網上有很多解答,就是指針和數組越界的問題;

今天有個同學問我一個問題,就是碰見了這一串的0x00000000,我也是第一次碰見這玩意兒,上網搜了搜,原來是指針和數組越界了;

  • 道理是明白了,可是這幾百來行的代碼實在是看的人眼花繚亂,我不斷的調啊調,終於將問題鎖定在了strlen這裏:
    在這裏插入圖片描述
  • 接着找到這個showText一看,得是個指針;
    在這裏插入圖片描述
  • 眼瞅着是沒啥問題,可咋就一直報錯呢?結果是她在主函數裏調用了一個函數,又通過這個函數調用另一個函數,通過最後一函數使用了這個strlen(showText),這東跑西跑,突然出現錯誤就傻了😢;
  • 到中間一看,showText還是原來那個showText,一直到調用一點沒變,最開始也沒有賦值,就是個char *showText;,那可不就妥妥的得出錯

定義showText時賦值,問題就解決了
定義指針時記得要賦值,路邊的野花雖然香,但是不要隨便採啊

我偶爾也這麼定義指針,今天一看,這錯誤不大,但確實讓人腦闊痛
所以在定義指針的時候,千萬不要偷懶啊,不然到時候成百上千行代碼,擱哪兒找這錯誤啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章