C庫函式 void *realloc(void *ptr, size_t size) 試圖調整以前分配與呼叫malloc或calloc的ptr所指向的記憶體塊的大小。
以下是realloc() 函式的宣告。
void *realloc(void *ptr, size_t size)
ptr -- 這是以前用malloc,calloc或realloc分配,重新分配的記憶體塊的指標。如果是NULL,分配一個新的塊,由該函式返回一個指向它的指標。
size -- 這是新的記憶體塊的大小(以位元組為單位)。如果它是0 並且ptr 指向現有的記憶體塊,指標所指向的記憶體塊被釋放,並返回一個NULL指標。
這個函式返回一個新分配的記憶體的指標,或NULL如果請求失敗。
下面的例子顯示 realloc() 函式的用法。
#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); }
讓我們編譯和執行上面的程式,這將產生以下結果:
String = yiibai, Address = 355090448 String = tw511.com, Address = 355090448