C++debug調試出現heap corruption detected: after normal block 可能的原因

最近在刷C++題目的代碼,在刷題過程中出現了

heap corruption detected: after normal block

這種錯誤出現的概率應該還是蠻高的:

這裏寫圖片描述

這是典型的內存溢出錯誤,常在delete處發生,而且一般在debug版本中出現,release版本中可能並不報錯。
這種錯誤的出現一般是在程序中new出一段內存後,在使用的過程中無形的增加了new出來的內存長度,在delete的時候沒有注意內存長度已經發生了變化,所以會出現如上的錯誤。比如:

int *p = new int[5]
for(int index = 0, index <= 5; index++)
{
    *(p + index) = 22;
}
delete[] p;

這裏指針p,new出來的長度值只有5,而賦值的時候卻是6的長度,所以在delete的時候會出現內存的泄漏。這種錯誤一般會出現在debug版本中,release版本可能並不會出現,但是隱患還是存在的,所以我們在出現這種錯誤的時候一定要仔細檢查代碼對於new出來的指針。

發佈了58 篇原創文章 · 獲贊 46 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章