內(nèi)存分配失敗
內(nèi)存分配可能失敗。常用解決辦法是,在使用內(nèi)存之前檢查指針是否為NULL。
內(nèi)存分配成功排霉,但是尚未初始化就引用
一定要賦零值
內(nèi)存分配成功并且已經(jīng)初始化,但操作越界
例如在使用數(shù)組時(shí)經(jīng)常發(fā)生下標(biāo)“多1”或者“少1”的操作民轴。特別是在for循環(huán)語句中攻柠,循環(huán)次數(shù)很容易搞錯(cuò),導(dǎo)致數(shù)組操作越界后裸。
忘記釋放內(nèi)存瑰钮,造成內(nèi)存泄露
動(dòng)態(tài)內(nèi)存的申請(qǐng)與釋放必須配對(duì),如果因程序錯(cuò)綜復(fù)雜而導(dǎo)致難以檢查微驶,請(qǐng)盡量重新設(shè)計(jì)代碼結(jié)構(gòu)飞涂。
釋放了內(nèi)存卻繼續(xù)使用它。
有三種情況:
(1)程序中的對(duì)象調(diào)用關(guān)系過于復(fù)雜祈搜,實(shí)在難以搞清楚某個(gè)對(duì)象究竟是否已經(jīng)釋放了內(nèi)存较店,此時(shí)應(yīng)該重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),從根本上解決對(duì)象管理的混亂局面容燕。
(2)函數(shù)的return語句寫錯(cuò)了梁呈,注意不要返回指向“棧內(nèi)存”的“指針”或者“引用”,因?yàn)樵搩?nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷毀蘸秘。
(3)使用free或delete釋放了內(nèi)存后官卡,沒有將指針設(shè)置為NULL。導(dǎo)致產(chǎn)生“野指針”醋虏。
內(nèi)存分配規(guī)則
申請(qǐng)內(nèi)存之后寻咒,應(yīng)該立即檢查指針值是否為NULL,防止使用指針值為NULL的內(nèi)存颈嚼。
為數(shù)組和動(dòng)態(tài)內(nèi)存賦初值毛秘,防止將未被初始化的內(nèi)存作為值使用。
避免數(shù)組或指針的下標(biāo)越界阻课,特別要當(dāng)心發(fā)生“多1”或者“少1”操作叫挟。
動(dòng)態(tài)內(nèi)存的申請(qǐng)與釋放必須配對(duì),防止內(nèi)存泄漏限煞。
釋放內(nèi)存之后抹恳,立即將指針設(shè)置為NULL,防止產(chǎn)生“野指針”署驻。