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!