C庫函數(shù) void *realloc(void *ptr, size_t size) 試圖調(diào)整以前分配與調(diào)用malloc或calloc的ptr所指向的內(nèi)存塊的大小。
以下是realloc() 函數(shù)的聲明。
void *realloc(void *ptr, size_t size)
ptr -- 這是以前用malloc,calloc或realloc分配,重新分配的內(nèi)存塊的指針。如果是NULL,分配一個(gè)新的塊,由該函數(shù)返回一個(gè)指向它的指針。
size -- 這是新的內(nèi)存塊的大?。ㄒ宰止?jié)為單位)。如果它是0 并且ptr 指向現(xiàn)有的內(nèi)存塊,指針?biāo)赶虻膬?nèi)存塊被釋放,并返回一個(gè)NULL指針。
這個(gè)函數(shù)返回一個(gè)新分配的內(nèi)存的指針,或NULL如果請(qǐng)求失敗。
下面的例子顯示 realloc() 函數(shù)的用法。
#include <stdio.h> #include <stdlib.h> int main() { char *str; /* Initial memory allocation */ str = (char *) malloc(15); strcpy(str, "yiibai"); printf("String = %s, Address = %u ", str, str); /* Reallocating memory */ str = (char *) realloc(str, 25); strcat(str, ".com"); printf("String = %s, Address = %u ", str, str); free(str); return(0); }
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
String = yiibai, Address = 355090448 String = yiibai.com, Address = 355090448