易百教程

使用realloc()函数重新分配内存

realloc()函数具有以下格式:

p = realloc(buffer,size);
  • buffer是一个现有的存储区域,由malloc()函数创建。
  • size是新的缓冲区大小,基于需要的特定变量类型的多个单位。

申请内存成功后,realloc()返回一个指向缓冲区的指针; 否则返回NULL
在以下代码中,realloc()函数将已创建的缓冲区的大小调整为新值。

示例代码

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main()
{
    char *input;
    int len;

    input = (char *)malloc(sizeof(char) * 1024);
    if (input == NULL)
    {
        puts("申请内存失败,可能内存不够用了!");
        exit(1);
    }
    puts("请输入一个长字符串:");
    fgets(input, 1023, stdin);
    len = strlen(input);
    if (realloc(input, sizeof(char)*(len + 1)) == NULL)
    {
        puts("申请内存失败,可能内存不够用了!");
        exit(1);
    }
    puts("内存重新分配.");
    puts("你写入的内容是:");
    printf("\"%s\"\n", input);

    system("pause");
    return(0);
}

执行上面示例代码,得到以下结果:

请输入一个长字符串:
This is a tutorials from yiibai.com,yes!
内存重新分配.
你写入的内容是:
"This is a tutorials from yiibai.com,yes!