C 库中的 realloc() 函数:如何使用?语法和示例
什么是 realloc()?
realloc() 是 C 库的一个函数,用于向已分配的内存块添加更多内存大小。在 C 中 realloc 的目的是扩展当前内存块,同时保持原始内容不变。 realloc() 函数有助于减少 malloc 或 calloc 函数先前分配的内存大小。 realloc 代表内存的重新分配。
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导致操作不成功时,都会返回一个空指针,之前的数据也被释放。
C语言