發(fā)布于:2021-02-05 14:52:20
0
547
0
什么是realloc()?
realloc()是C庫的功能,用于為已分配的內存塊增加更多的內存大小。C語言中重新分配的目的是擴展當前的存儲塊,同時保留原始內容。realloc()函數有助于通過malloc或calloc函數減少先前分配的內存大小。realloc代表內存的重新分配。
在C中realloc的語法:
ptr = realloc (ptr,newsize);
上面的語句在變量newsize中分配具有指定大小的新內存空間。執(zhí)行完函數后,指針將返回到存儲塊的第一個字節(jié)。新的大小可以大于或小于以前的內存。我們不能確定新分配的塊是否將指向與先前存儲塊相同的位置。C語言中的realloc函數將在新區(qū)域中復制所有先前的數據。它確保數據將保持安全。
例如:
#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
每當重新分配導致操作失敗時,它都會返回空指針,并且先前的數據也將被釋放。
作者介紹