c語言malloc用法 C語言編程時使用MALLOC后一直沒有用FREE函數(shù)釋放內(nèi)存空間怎么辦?
C語言編程時使用MALLOC后一直沒有用FREE函數(shù)釋放內(nèi)存空間怎么辦?如果不使用free釋放內(nèi)存,將導(dǎo)致內(nèi)存泄漏。隨著程序的運行,程序占用的內(nèi)存越來越多,直到系統(tǒng)崩潰或程序結(jié)束。1. Free函數(shù):
C語言編程時使用MALLOC后一直沒有用FREE函數(shù)釋放內(nèi)存空間怎么辦?
如果不使用free釋放內(nèi)存,將導(dǎo)致內(nèi)存泄漏。隨著程序的運行,程序占用的內(nèi)存越來越多,直到系統(tǒng)崩潰或程序結(jié)束。
1. Free函數(shù):
原型:void Free(void)*[PTR];
函數(shù):釋放malloc(或calloc,realloc)函數(shù)分配給指針變量的動態(tài)內(nèi)存;
頭文件:malloc。H或stdlib。H、
2。為了避免釋放已釋放或未釋放的指針內(nèi)存,在C語言中定義指針時,最好先賦null作為初始值,釋放后立即賦null,釋放釋放錯誤時再檢查指針值并決定釋放,例如:
int*a=null
int*b=(int*)malloc(sizeof(int)*10)
a=b
/*經(jīng)過大量運算后*/
if(a!=null){自由(a)a=null}
如果(b!=null){空閑(b)b=null}
程序結(jié)束后,泄漏的內(nèi)存將被恢復(fù)。因為在程序結(jié)束后,程序占用的所有內(nèi)存都會被收集起來。程序使用的內(nèi)存包括靜態(tài)變量和動態(tài)變量。動態(tài)變量可以通過malloc和free動態(tài)修改程序占用的內(nèi)存空間。靜態(tài)變量從定義開始到程序結(jié)束都會占用內(nèi)存空間,直到程序結(jié)束才會釋放。Malloc函數(shù)是在程序中從系統(tǒng)中動態(tài)應(yīng)用內(nèi)存單元。當(dāng)不使用這些單元時,可以使用free函數(shù)動態(tài)釋放,從而減少程序占用的內(nèi)存。如果不使用free函數(shù)釋放,程序占用的內(nèi)存不會減少,但當(dāng)程序完成后,所有占用的內(nèi)存單元(包括靜態(tài)變量和動態(tài)變量)都會被釋放,系統(tǒng)將關(guān)閉。