realloc函數(shù)是將數(shù)組擴(kuò)容的一個(gè)函數(shù)
用法:指針名=(數(shù)據(jù)類型*)realloc(要改變內(nèi)存大小的指針名,新的大小)。
具體工作方法:
假設(shè)有一個(gè)p指針指向一個(gè)數(shù)組空間,如下圖所示
想在想要使這個(gè)數(shù)組的空間變?yōu)樵瓉淼?倍,realloc函數(shù)就會(huì)在p指向的這個(gè)數(shù)組空間后面申請一段空間,如下圖所示
若申請成功:函數(shù)執(zhí)行完成。
若沒有申請成功:則realloc函數(shù)會(huì)調(diào)用malloc函數(shù)另外開辟一個(gè)數(shù)組空間。
若開辟新的數(shù)組空間成功:將原數(shù)組中的數(shù)據(jù)拷貝到新的數(shù)組中,釋放掉原數(shù)組,并放回一個(gè)數(shù)組首地址,需要用一個(gè)指針來接。
文章來源:http://www.zghlxwxcb.cn/news/detail-520744.html
若開辟新的數(shù)組空間失敗:
不會(huì)釋放掉原數(shù)組,會(huì)返回一個(gè)空地址,表示開辟新數(shù)組失敗,原來的數(shù)組空間沒動(dòng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-520744.html
int Length_arr=sizeof(arr)/4;
bool Extend(int Length_arr)
{
int new_size=Length_arr*2; //新數(shù)組長度
int* p=(int* )realloc(arr,sizeof(int)* new_size); //將arr中復(fù)制到p中
if(p==NULL) return false; //若p=NULL,arr保持不動(dòng)
else{ //p!=NULL,arr=p,釋放arr
arr=p;
return true;
}
}
到了這里,關(guān)于realloc函數(shù)用法解釋的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!