C语言 <stdlib.h> realloc 函数

  • 描述

    C库函数void *realloc(void *ptr, size_t size)尝试调整ptr指向的内存块的大小,该内存块先前是通过调用malloc或calloc分配的。
  • 声明

    以下是realloc函数的声明。
    
    void *realloc(void *ptr, size_t size)
    
    参数
    • ptr-这是指向先前分配有要重新分配的malloc,calloc或realloc的内存块的指针。如果为NULL,则分配一个新块,并由该函数返回指向它的指针。
    • size-这是存储块的新大小,以字节为单位。如果它为0,并且ptr指向现有内存块,则将释放由ptr指向的内存块,并返回NULL指针。
  • 返回值

    此函数返回指向新分配的内存的指针,如果请求失败,则返回NULL。
    示例
    以下示例显示realloc函数的用法-
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main () {
       char *str;
    
       /* Initial memory allocation */
       str = (char *) malloc(15);
       strcpy(str, "jc2182");
       printf("String = %s,  Address = %u\n", str, str);
    
       /* Reallocating memory */
       str = (char *) realloc(str, 25);
       strcat(str, ".com");
       printf("String = %s,  Address = %u\n", str, str);
    
       free(str);
       
       return(0);
    }
    
    让我们编译并运行上面的程序,它将产生以下结果-
    
    String = jc2182, Address = 355090448
    String = jc2182.com, Address = 355090448