有關realloc malloc calloc

realloc,malloc,calloc的區別
三個函數的申明分別是:
void realloc(void ptr, unsigned newsize);
void malloc(unsigned size);
void
calloc(size_t numElements, size_t sizeOfElement);
都在stdlib.h函數庫內
它們的返回值都是請求系統分配的地址,如果請求失敗就返回NULL

malloc用於申請一段新的地址,參數size爲需要內存空間的長度,如:
char p;
p=(char
)malloc(20);

calloc與malloc相似,參數sizeOfElement爲申請地址的單位元素長度,numElements爲元素個數,如:
char p;
p=(char
)calloc(20,sizeof(char));
這個例子與上一個效果相同

realloc是給一個已經分配了地址的指針重新分配空間,參數ptr爲原有的空間地址,newsize是重新申請的地址長度
如:
char p;
p=(char
)malloc(sizeof(char)20);
p=(char
)realloc(p,sizeof(char)*40);

注意,這裏的空間長度都是以字節爲單位。

C語言的標準內存分配函數:malloc,calloc,realloc,free等。
malloc與calloc的區別爲1塊與n塊的區別:
malloc調用形式爲(類型)malloc(size):在內存的動態存儲區中分配一塊長度爲“size”字節的連續區域,返回該區域的首地址。
calloc調用形式爲(類型
)calloc(n,size):在內存的動態存儲區中分配n塊長度爲“size”字節的連續區域,返回首地址。
realloc調用形式爲(類型)realloc(ptr,size):將ptr內存大小增大到size。

free的調用形式爲free(void*ptr):釋放ptr所指向的一塊內存空間。
C++中爲new/delete函數。

本文非原創,僅僅是方便查閱轉載
原文:https://www.cnblogs.com/BlueTzar/articles/1136549.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章