realloc用法并举例说明
时间: 2024-04-29 20:13:06 浏览: 146
realloc函数使用总结
realloc是C语言中的一个函数,主要用于重新分配已经动态分配的内存空间。它可以改变之前分配的内存块的大小,使其能够容纳更多或更少的数据。
realloc函数的语法如下:
```c
void* realloc(void* ptr, size_t size);
```
其中,ptr是之前通过malloc、calloc或realloc函数分配的内存指针,size是需要重新分配的内存大小。
下面是一个使用realloc函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
// 分配一个包含3个整数的动态数组
int* numbers = (int*)malloc(3 * sizeof(int)); if (numbers == NULL) {
printf("内存分配失败");
return 1;
}
// 给数组赋初值
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
// 将数组扩展到包含5个整数
int* newNumbers = (int*)realloc(numbers, 5 * sizeof(int));
if (newNumbers == NULL) {
printf("内存重新分配失败");
free(numbers);
return 1;
}
// 给新增的数组元素赋值
newNumbers[3] = 4;
newNumbers[4] = 5;
// 输出数组元素
for (int i = 0; i < 5; i++) {
printf("%d ", newNumbers[i]);
}
// 释放内存
free(newNumbers);
return 0;
}
```
在上述示例中,我们首先使用malloc函数分配了一个包含3个整数的动态数组。然后,使用realloc函数将数组的大小扩展到包含5个整数。如果内存重新分配成功,realloc函数会返回一个指向新内存块的指针,我们将其赋值给newNumbers。接着,我们给新增的数组元素赋值,并打印出数组中的所有元素。最后,通过调用free函数释放内存。
需要注意的是,使用realloc函数重新分配内存时,原来的指针可能会失效。因此,在将realloc的返回值赋给新指针之前,需要进行判空操作以确保内存重新分配成功。另外,realloc函数还可以用于缩小内存块的大小,但需要注意潜在的数据丢失风险。
阅读全文