天天看點

C 存儲空間的配置設定和釋放

存儲空間的配置設定和釋放

動态存儲配置設定的資料結構

頭檔案  #include<stdlib.h>

用四個函數來進行動态儲存配置設定{ malloc(),calloc(), realloc()},動态存儲釋放:free()。

1.malloc(),動态配置設定一段記憶體空間

void *malloc(unsigned int size)

用sizeof()來計算申請空間的大小

例:int *p=(int *)malloc(sizeof(int))

申請一個Int類型長度的存儲空間,并将配置設定的位址空間位址轉化成int類型位址,賦給所定義的指針變量P.

C 存儲空間的配置設定和釋放

2.calloc(),動态配置設定連續記憶體空間

void *calloc(unsigned int n,unsigned int size);

記憶體申請n個長度的size位元組的存儲空間,并傳回改存儲空間的起始位置,n為元素的個數,size為元素存儲長度。

例:int*p=(int*)calloc(10,sizeof(int));

相當于  int *p=(int *)mallo(sizeof(int)*10);

比如:用calloc和malloc 函數配置設定數組26個字元的字元數

char *ch1=(char*)calloc(26,sizeof(char));

char *ch2=(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

C 存儲空間的配置設定和釋放

4.free(),釋放存儲空間

void free (void *p)

無傳回值

例:int *a;

*a=(int *)calloc(20,sizeof(int));

a=b;

b++;

free(a);