指動(dòng)態(tài)申請(qǐng)的內(nèi)存空間沒有正常釋放,也不能夠繼續(xù)使用的情況。
最常見的就是new后沒有正常的使用delete來釋放,導(dǎo)致內(nèi)存泄漏。
1 指針懸掛
指針指向一個(gè)已經(jīng)釋放的地址空間。
兩個(gè)指針指向同一個(gè)內(nèi)存空間,在delete的時(shí)候該空間會(huì)釋放兩次,出現(xiàn)運(yùn)行錯(cuò)誤。
在淺拷貝的時(shí)候經(jīng)常出現(xiàn)。
2 野指針
指向釋放的或者訪問受限內(nèi)存的指針。
-指針變量沒有被初始化(值不定,可以初始化為NULL)
-指針被free或者delete后,沒有置為NULL。free和delete只是把指針指向的內(nèi)存給釋放掉,并沒有消除指針本身,此時(shí)指針指向的是垃圾內(nèi)存(內(nèi)存中隨機(jī)的位置),釋放后的指針應(yīng)該被置為NULL。
-指針操作超越了變量的作用范圍,比如返回指向棧內(nèi)存的指針就是野指針。
3 內(nèi)存泄漏的危害
內(nèi)存泄漏的堆積會(huì)導(dǎo)致系統(tǒng)的所有內(nèi)存被消耗,嚴(yán)重影響使用。