存儲空間的分配和釋放
創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、網(wǎng)站制作、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
動態(tài)存儲分配的數(shù)據(jù)結(jié)構(gòu)
頭文件 #include
用四個函數(shù)來進(jìn)行動態(tài)儲存分配{ malloc(),calloc(),realloc()},動態(tài)存儲釋放:free()。
1.malloc(),動態(tài)分配一段內(nèi)存空間
void *malloc(unsigned int size)
用sizeof()來計算申請空間的大小
例:int *p=(int *)malloc(sizeof(int))
申請一個Int類型長度的存儲空間,并將分配的地址空間地址轉(zhuǎn)化成int類型地址,賦給所定義的指針變量P.
2.calloc(),動態(tài)分配連續(xù)內(nèi)存空間
void *calloc(unsigned int n,unsigned int size);
內(nèi)存申請n個長度的size字節(jié)的存儲空間,并返回改存儲空間的起始位置,n為元素的個數(shù),size為元素存儲長度。
例:int*p=(int*)calloc(10,sizeof(int));
相當(dāng)于 int *p=(int *)mallo(sizeof(int)*10);
比如:用calloc和malloc 函數(shù)分配數(shù)組26個字符的字符數(shù)
char *ch2=(char*)calloc(26,sizeof(char));
char *ch3=(char*)malloc(sizeof(char[26]);
3.realloc改變指針指向空間的大小
void *realloc (void *prt,size_t size)
例:
改變一個浮點型空間大小為整型大小
fDouble=(double*)malloc(sizeof(double));
iInt=realloc(fDouble,sizeof(int));
程序:double 型改為short
4.free(),釋放存儲空間
void free (void *p)
無返回值
例:int *a;
*a=(int *)calloc(20,sizeof(int));
a=b;
b++;
free(a);