free
隻能釋放 malloc calloc realloc 動态申請的記憶體
calloc
在記憶體堆中,申請nmemb塊,每塊大小為size個位元組數的連續區域
malloc記憶體中存放的内容是随機的,calloc函數申請的記憶體内容為0。也就是說,malloc需要初始化,用calloc一旦申請空間成功,内容就為0。
realloc動态追加或減少空間
函數原型: void *realloc(void *ptr, size_t size);
作用:嘗試重新調整之前調用 malloc 或 calloc 所配置設定的 ptr 所指向的記憶體塊的大小。
參數:
ptr -- 指針指向一個要重新配置設定記憶體的記憶體塊,該記憶體塊之前是通過調用 malloc、calloc 或 realloc 進行配置設定記憶體的。如果為空指針,則會配置設定一個新的記憶體塊,且函數傳回一個指向它的指針。
size -- 記憶體塊的新的大小,以位元組為機關。如果大小為 0,且 ptr 指向一個已存在的記憶體塊,則 ptr 所指向的記憶體塊會被釋放,并傳回一個空指針。
傳回值:
該函數傳回一個指針 ,指向重新配置設定大小的記憶體。如果請求失敗,則傳回 NULL。
動态申請的記憶體位址可能改變,是以必須接收傳回值。
注意事項:
1、指向堆區的指針變量不要随意改變指向,否則可能導緻記憶體洩漏;
2、不要操作已釋放的空間,其内容不确定;
3、不要重複釋放;
防止重複釋放的操作:
if(p!=NULL)
{
free(p);
p=NULL;
}