C语言realloc()函数,重新分配内存

realloc()函数

C语言stdlib.h标准库中的realloc()函数,可用于将之前动态分配内存进行重新分配,以动态地、灵活地增加或减少已分配的内存的大小。注意,realloc()函数一般只用于重新分配通过calloc()、malloc()和realloc()函数动态分配的内存。realloc()函数的返回值为一个指向重新分配好内存的地址的指针。realloc()语法如下:

void *realloc(void *ptr, int size);

realloc()参数

参数描述
ptr指针,指向需要重新分配内存的地址
sizeint类型,指定新分配的内存块的大小

提示:如果size的值为0,realloc()函数将释放内存,并返回NULL指针。

realloc()实例代码

下面实例使用malloc()函数动态分配一个sizeof(int)大小的内存,并输出,之后使用前面章节介绍的free()函数来释放内存空间,并将指针指向NULL,避免悬挂指针:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"


int main() {
    char *ptr = malloc(100*sizeof(char));
    if(ptr == NULL){
        printf("未动态分配内存\n");
    }else{
        printf("动态分配内存完成\n");
        strcpy(ptr,"x1y1z1.com");
        printf("%s\n", ptr);
    }

    // realloc()函数重新分配内存
    ptr = realloc(ptr, 150*sizeof(char));
    if(ptr == NULL){
        printf("重新动态分配内存未完成");
    }else{
        printf("重新动态分配内存完成");
    }
    free(ptr);
    // 指针指向NULL,避免悬挂指针
    ptr = NULL;
    
    return 0;

}

代码运行后,得到输出值为:

动态分配内存完成
x1y1z1.com
重新动态分配内存完成

免责声明:内容仅供参考,不保证正确性。


全栈后端 / C语言教程 :


















Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.