C库中的realloc()函数及其示例

发布于:2021-02-05 14:52:20

0

509

0

C realloc() 示例 编程语言

什么是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

每当重新分配导致操作失败时,它都会返回空指针,并且先前的数据也将被释放。