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