內(nèi)存分配方式
1 靜態(tài)存儲(chǔ)區(qū)域 全局變量 static
2 棧 局部變量
3 動(dòng)態(tài)存儲(chǔ)區(qū)域(堆)(malloc free) (new delete)
常見錯(cuò)誤和對(duì)策
1 內(nèi)存分配未成功。
對(duì)策:程序入口處,檢查指針是否為NULL。
(1)參數(shù)*p所指向的內(nèi)存,用assert( p != NULL)
(2)malloc或new申請(qǐng)的內(nèi)存,用if ( p != NULL)
2 內(nèi)存未初始化。
3 內(nèi)存操作越界。
4 忘記釋放內(nèi)存,內(nèi)存泄露。
new與delete配對(duì)。
5 釋放內(nèi)存,卻繼續(xù)使用。
(1)return不能返回“棧內(nèi)存指針”和“引用”,因?yàn)樵搩?nèi)存在函數(shù)結(jié)束時(shí)被銷毀。
(2)釋放內(nèi)存后,設(shè)為NULL,防止“野指針”。
規(guī)則
1 申請(qǐng)內(nèi)存后檢查。assert( p != NULL)
2 數(shù)組、動(dòng)態(tài)內(nèi)存初始化。
3 申請(qǐng)釋放要配對(duì)。
4 釋放內(nèi)存設(shè)置NULL,防止產(chǎn)生野指針。