发布于:2021-02-05 14:52:20
0
509
0
什么是realloc()?
realloc()是C库的功能,用于为已分配的内存块增加更多的内存大小。C语言中重新分配的目的是扩展当前的存储块,同时保留原始内容。realloc()函数有助于通过malloc或calloc函数减少先前分配的内存大小。realloc代表内存的重新分配。
在C中realloc的语法:
ptr = realloc (ptr,newsize);
上面的语句在变量newsize中分配具有指定大小的新内存空间。执行完函数后,指针将返回到存储块的第一个字节。新的大小可以大于或小于以前的内存。我们不能确定新分配的块是否将指向与先前存储块相同的位置。C语言中的realloc函数将在新区域中复制所有先前的数据。它确保数据将保持安全。
例如:
#includeint main () {
char *ptr;
ptr = (char *) malloc(10);
strcpy(ptr, "Programming");
printf(" %s, Address = %un", ptr, ptr);
ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
strcat(ptr, " In 'C'");
printf(" %s, Address = %un", ptr, ptr);
free(ptr);
return 0;
}
如何使用realloc()
下面的C语言程序演示了如何在C语言中使用realloc来重新分配内存。
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, * ptr, sum = 0;
ptr = malloc(100);
if (ptr == NULL) {
printf("Error! memory not allocated.");
exit(0);
}
ptr = realloc(ptr,500);
if(ptr != NULL)
printf("Memory created successfullyn");
return 0;
}
C示例中的realloc结果:
Memory created successfully
每当重新分配导致操作失败时,它都会返回空指针,并且先前的数据也将被释放。
作者介绍