中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VS 0xC0000005 運行錯誤分析

發布時間:2020-06-24 03:34:25 來源:網絡 閱讀:7827 作者:fengyuzaitu 欄目:編程語言

0xC0000005: 讀取位置 0x22203A22 時發生訪問沖突

場景

   網絡傳輸過來的,由于采用了qpid-cpp庫,獲取到的是request.getContent()的是string類型的數據類型,然后通過c_str函數,獲取到字符串,保存在一個char szBuffer[1024]數組內,在定義的類,調用析構函數退出導致程序崩潰


原因

    通過strcpy拷貝字符串到szBuffer數組,發生了數組的越界,因為字符串的長度是1159


提醒

    目前已經出現過兩次的0xC0000005崩潰信息

1 訪問一個釋放的空指針,在一個遞歸的邏輯中

2 strcpy拷貝字符串,發生數組越界


xC0000005:讀取位置oxfeeefeee時發生訪問沖突

問題

    test.exe 中的 0x1021af50 (zlib.dll) 處未處理的異常: 0xC0000005: 讀取位置 0xfeeefeee 時發生訪問沖突

    

分析

    代碼中斷于獲取list的迭代指針:

 #if _HAS_ITERATOR_DEBUGGING || _SECURE_SCL

iterator begin()

{// return iterator for beginning of mutable sequence

return (iterator(_Nextnode(_Myhead), this));

}

懷疑1:是否是堆棧溢出?不可能沒有占用多少空間

懷疑2:是否迭代書寫問題?不可能在其他的程序運行良好

現象:調用堆棧的顯示區域,提示:feeefeee()

進行debug設置:調試菜單下,勾選所有的異常,在調試的模式下,重新編譯。這一次指向list迭代之前的一行代碼,這行代碼進行了字符串的拷貝,觀察賦值指針,pszName的值是0xfeeefeee:錯誤的指針。


補充知識

FEEEFEEE微軟的HeapFree函數用該值來標記被釋放了的堆內存


經過上面的知識,可以知道任何的一塊內存分配,都會在字符串中填充0xfeeefeee作為內存沒有釋放的標志,當調用函數釋放內存的時候,就會首先檢查指針的內容是否包含該標志位,如果沒有該標志位,就會出現異常中斷的情況。pszName分配的內存已經被釋放,導致了程序中斷。在項目中,采用了遞歸的算法進行了多次的搜索,在函數進行退出遞歸的時候,該指針已經指向了一個已經釋放的內存,所在在進行遞歸的過程中,將已有的內容拷貝出來,防止在遞歸的過程中被釋放,從而解決了問題。




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

商都县| 和静县| 区。| 邵阳市| 文登市| 宣恩县| 定南县| 乌兰察布市| 云梦县| 海宁市| 姚安县| 安泽县| 辉县市| 会理县| 徐水县| 公主岭市| 古蔺县| 赤城县| 佳木斯市| 安多县| 临沧市| 黄平县| 南木林县| 顺义区| 林甸县| 玉环县| 丰县| 察哈| 四川省| 蒙城县| 永春县| 伊金霍洛旗| 苏尼特左旗| 邯郸市| 剑河县| 仪征市| 阿克| 合江县| 东丰县| 昭通市| 饶河县|