您好,登錄后才能下訂單哦!
存儲空間的分配和釋放
動態存儲分配的數據結構
頭文件 #include<stdlib.h>
用四個函數來進行動態儲存分配{ malloc(),calloc(), realloc()},動態存儲釋放:free()。
1.malloc(),動態分配一段內存空間
void *malloc(unsigned int size)
用sizeof()來計算申請空間的大小
例:int *p=(int *)malloc(sizeof(int))
申請一個Int類型長度的存儲空間,并將分配的地址空間地址轉化成int類型地址,賦給所定義的指針變量P.
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 *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);
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。