–釋放了內(nèi)存,卻繼續(xù)使用它
n起因:
–指針?biāo)傅膬?nèi)存被釋放以后,并不表示指針會(huì)消亡
–其地址仍然不變(非NULL),只是該地址對(duì)應(yīng)的內(nèi)存是垃圾
–指向垃圾內(nèi)存的指針是“野指針”
nchar* GetInput(void)
{
char s[80];
scanf("%s", s);
return s;
}
warning C4172: returning address of local variable or temporary
n輸出亂碼
nvoid GetInput(char* s)
{
scanf("%s", s);
}
#include
#include
void GetInput(char *p)
{
p = (char *)malloc(100);
}
程序崩潰,函數(shù)不能傳遞動(dòng)態(tài)分配的內(nèi)存?
–盡量把malloc集中在函數(shù)的入口處,free集中在函數(shù)的出口處
–如果free不能放在函數(shù)出口處,則指針free后立即設(shè)置為NULL
–不要把局部變量的地址作為返回值返回,因?yàn)樵搩?nèi)存在函數(shù)體結(jié)束時(shí)被自動(dòng)銷毀
–指針要么初始化為NULL,要么是其指向合法的內(nèi)存
2015職稱計(jì)算機(jī)考試書PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書籍 | |
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書籍 |