C++debug调试出现heap corruption detected: after normal block 可能的原因
最近在刷C++題目的代碼,在刷題過(guò)程中出現(xiàn)了
heap corruption detected: after normal block這種錯(cuò)誤出現(xiàn)的概率應(yīng)該還是蠻高的:
這是典型的內(nèi)存溢出錯(cuò)誤,常在delete處發(fā)生,而且一般在debug版本中出現(xiàn),release版本中可能并不報(bào)錯(cuò)。
這種錯(cuò)誤的出現(xiàn)一般是在程序中new出一段內(nèi)存后,在使用的過(guò)程中無(wú)形的增加了new出來(lái)的內(nèi)存長(zhǎng)度,在delete的時(shí)候沒(méi)有注意內(nèi)存長(zhǎng)度已經(jīng)發(fā)生了變化,所以會(huì)出現(xiàn)如上的錯(cuò)誤。比如:
這里指針p,new出來(lái)的長(zhǎng)度值只有5,而賦值的時(shí)候卻是6的長(zhǎng)度,所以在delete的時(shí)候會(huì)出現(xiàn)內(nèi)存的泄漏。這種錯(cuò)誤一般會(huì)出現(xiàn)在debug版本中,release版本可能并不會(huì)出現(xiàn),但是隱患還是存在的,所以我們?cè)诔霈F(xiàn)這種錯(cuò)誤的時(shí)候一定要仔細(xì)檢查代碼對(duì)于new出來(lái)的指針。
總結(jié)
以上是生活随笔為你收集整理的C++debug调试出现heap corruption detected: after normal block 可能的原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python-爬虫(1)
- 下一篇: s3c2440移植MQTT