realloc() - C語言庫函數
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 = gitbook.net, Address = 355090448