C 速查手冊
11.4.9 realloc()
stdlib.h 的函數 (function) realloc() 用來做動態記憶體配置,可改變由 malloc() 、 calloc() 或 realloc() 所配置記憶體空間的大小,需要兩個參數 (parameter) ,第一個參數為指向原始空間的指標,第二個參數為新空間的大小。若調整成功, realloc() 回傳指向重新分配空間的指標 (pointer),否則回傳 NULL 。
以下程式利用函數 realloc() 擴充記憶體空間
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ptr;
ptr = malloc(23);
if (ptr == NULL) {
printf("建立記憶體區域失敗...\n");
exit(1);
}
strcpy(ptr, "History repeats itself.");
ptr = realloc(ptr, 25);
if(ptr == NULL) {
printf("擴充記憶體區域失敗...\n");
exit(1);
}
strcat(ptr, "\n");
printf(ptr);
free(ptr);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:crealloc.c
功能:示範 stdlib.h 中函數 realloc() 的使用
作者:張凱慶 */
編譯後執行,結果如下
$ gcc crealloc.c |
$ a.out |
History repeats itself. |
$ |