這三個函數的聲明分别是:
void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t numElements, size_t sizeOfElement);
都包含在include
傳回值:如果配置設定成功,傳回配置設定的首位址,否則傳回空(NULL)
malloc用于配置設定一段新位址,函數的參數為配置設定空間的大小:
char* p;
p=(char*)malloc(20);意思是配置設定20個位元組大小的空間,首位址是P
calloc與malloc相似,配置設定的空間是按照塊的,參數sizeOfElement為申請位址的機關元素長度,numElements為元素個數,如:
char* p;
p=(char*)calloc(20,sizeof(char));
這個例子與上一個效果相同,但意義不同,代表配置設定20塊大小為1的空間,首位址為p; realloc是給一個已經配置設定了位址的指針重新配置設定空間,參數ptr為原有的空間位址,newsize是重新申請的位址長度
如:
char* p;
p=(char*)malloc(sizeof(char)*20);
p=(char*)realloc(p,sizeof(char)*40);意思是将指針p配置設定的空間由20位元組變為40位元組
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所指向的一塊記憶體空間。