C 库中的 realloc() 函数:如何使用?语法与示例

realloc() 是什么?

realloc() 是 C 库的一个函数,用于为已分配的内存块添加更多内存。C 中 realloc 的目的是在保留原始内容不变的情况下扩展当前内存块。realloc() 函数可以减小 malloc 或 calloc 函数先前分配的内存大小。realloc 是 reallocation of memory(内存重新分配)的缩写。

C 语言 realloc 的语法

ptr = realloc (ptr,newsize);

上述语句在变量 newsize 中以指定大小分配了新的内存空间。执行 函数 后,指针将返回到内存块的第一个字节。新大小可以大于或小于之前的内存。我们无法确定新分配的块是否会指向与之前内存块相同的地址。C 中的 realloc 函数会将所有先前的数据复制到新的区域。它确保数据安全。

例如

#include <stdio.h>
int main () {
   char *ptr;
   ptr = (char *) malloc(10);
   strcpy(ptr, "Programming");
   printf(" %s,  Address = %u\n", ptr, ptr);

   ptr = (char *) realloc(ptr, 20); //ptr is reallocated with new size
   strcat(ptr, " In 'C'");
   printf(" %s,  Address = %u\n", 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 successfully\n");
           
    return 0;

    }

C 语言 realloc 示例结果

Memory created successfully

每当 realloc 操作不成功时,它会返回一个 空指针,并且之前的内存也会被释放。