1)內(nèi)存的幾種分配方式:
靜態(tài)存儲(chǔ)區(qū):全局變量和靜態(tài)變量
棧空間:局部變量,參數(shù)
堆分配(動(dòng)態(tài))
2)常見的內(nèi)存處理錯(cuò)誤以及策略:
1 分配未成功就開始使用
對(duì)策:檢測(cè)指針是否為NULL(判斷)
ex:assert(p!=NULL)//若P為函數(shù)的參數(shù)
if(p!=NULL)/if(p==NULL) //判斷分配內(nèi)存是否有效
2 內(nèi)存分配成功但沒(méi)初始化(賦初值)
3 內(nèi)存分配成功但操作越界
4 忘記釋放內(nèi)存而造成內(nèi)存泄露
5 釋放了內(nèi)存卻繼續(xù)使用它
原因:過(guò)多的對(duì)象調(diào)用
return語(yǔ)句中返回了指向棧空間的指針或其引用,該內(nèi)存在函數(shù)體結(jié)束后自動(dòng)銷毀
使用free/delete后沒(méi)有將指針置NULL產(chǎn)生野指針
3)數(shù)組和指針的區(qū)別
1 內(nèi)容的修改:
ex1:
char a[]="hello"; //a為字符數(shù)組
a[0]='X'; //a的內(nèi)容可以修改
cout<