<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    一個C++中的Heap Corrupt錯誤的分析

    這兩天一直在研究一個Crash問題,其表現非常明顯就是Memory Heap被破壞了,但是由于破壞堆的現場無法準確定位,發生Crash的地方已經不是現場,所以一直都沒找到原因。最后只好將代碼Roll Back回去,一個一個模塊的試,最終發現問題出現在某一個模塊中指針類型的強制轉換引起的虛函數調用錯誤上。

    錯誤是這樣的,有一個指針是A類型的,被強制轉換為B類型,并且通過B類型調用B的虛函數,但是實際上調用的虛函數地址在A的虛函數表中。由于兩者參數并不相同,所以導致錯誤出現。

    B類型的函數參數中有一個std::vector類型,由于c++遵循cdecl調用約定,所以是由被調用端負責清理堆棧,這時候就會調用std::vector的析構函數,而實際上該參數已經在調用A的虛函數時被破壞了,在執行完這個函數之后,棧是正確的,但是堆已經被std::vector的析構函數破壞,所以出現了heap Corruption的錯誤。

    Heap Corruption是C++開發中非常棘手的一個問題,其引起的Crash有兩點非常難以琢磨:

    1. 在Debug版較難或者不出現,在Release版常常出現

    2. 在Release版本上也是在非現場出現,而且往往在大量釋放內存的地方出現。

    相信應該有比較好C++的Heap Corruption工具,BoundChecker曾經用過,可惜太復雜不會用,不知道有沒有非常有效的檢測Heap Corruption工具。

    posted on 2007-07-24 23:07 雁過無痕 閱讀(1543) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    常用鏈接

    留言簿(7)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 毛片免费视频播放| 男女污污污超污视频免费在线看| 亚洲情a成黄在线观看动漫尤物| 国产亚洲大尺度无码无码专线 | 91禁漫免费进入| 无码A级毛片免费视频内谢| 国产在线观看无码免费视频| 国产国产人免费人成成免视频| 一级做α爱过程免费视频| 永久免费观看黄网站| 男女一边桶一边摸一边脱视频免费| 久久WWW免费人成—看片| j8又粗又长又硬又爽免费视频 | 亚洲人成人77777在线播放| 色偷偷女男人的天堂亚洲网| 亚洲砖码砖专无区2023 | 亚洲人成在线播放网站| 亚洲第一AAAAA片| 4444亚洲国产成人精品| 亚洲一区二区三区在线网站| 亚洲人成人网毛片在线播放| 久久精品国产亚洲AV| 一级做a爰性色毛片免费| 丝瓜app免费下载网址进入ios| 日本免费在线观看| 1000部禁片黄的免费看| 成人免费a级毛片| 亚洲av中文无码| 国产亚洲精久久久久久无码| 久久亚洲中文字幕精品有坂深雪| 久久亚洲最大成人网4438| 亚洲AV无码专区在线观看成人 | 国产亚洲日韩在线a不卡| 国产亚洲综合成人91精品| 精品日韩亚洲AV无码一区二区三区 | 大学生a级毛片免费观看| 无码欧精品亚洲日韩一区夜夜嗨| 久久亚洲国产成人精品无码区| 亚洲国产另类久久久精品| 亚洲乱人伦精品图片| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 |