HEAP
以對內(nèi)在操作的過程中,所寫的地址超出了,所分配內(nèi)在的邊界
這是典型的內(nèi)存溢出錯誤,常在內(nèi)存的delete處發(fā)生,而且一般在debug版本中可能出現(xiàn),release版本中可能并不報錯.
出現(xiàn)這個錯誤的原因一般都是操作new申請的內(nèi)存溢出
,因為在c++中,如果用new分配一段內(nèi)存,操作的時候改變了該部分的大小,在delete時就會出錯.比如說如下部分:char* p=new char[5];strcpy(p,"aaaaa");delete[] p;這段代碼就會出錯,因為申請了一個size為5的內(nèi)存,但是strcpy過去了一個size為6的字符串,因此破壞了這個指針,運行debug版本的時候就會出現(xiàn)先前的錯誤,但是在release版本中,溢出一個字節(jié)的內(nèi)存很有可能是沒有錯誤的,然后潛在的隱患是肯定存在的,因此,我們在debug遇到這樣的錯誤時候一定要仔細(xì)檢查對new出的指針的操作.
新聞熱點
疑難解答