三個函數的原型
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(10);
calloc與malloc差不多。
參數sizeOfElement為申請地址的單位元素長度,numElements為元素個數,如:
char* p;
p=(char*)calloc(10,sizeof(char));
這個例子與上一個效果相同
realloc是給一個已經分配了地址的指針重新分配空間,
參數ptr為原有的空間地址,newsize是重新申請的地址長度
如:
char*
p;
p=(char*)malloc(sizeof(char)*10);
p=(char*)realloc(p,sizeof(char)*20);
這裡申請的空間都是以字節為單位
malloc與calloc的區別為1塊與n塊的區別:
malloc調用形式為(類型*)malloc(size):
在內存的動態存儲區中分配一塊長度為“size”字節的連續區域,返回該區域的首地址。
calloc調用形式為(類型*)calloc(n,size):
在內存的動態存儲區中分配n塊長度為“size”字節的連續區域,返回首地址。
realloc調用形式為(類型*)realloc(*ptr,size):將ptr內存大小增大到size。