realloc指针数组例子
时间: 2024-08-13 08:06:43 浏览: 119
`realloc` 是 C 标准库中的一个函数,用于动态调整内存大小。当需要改变指针数组的长度或分配更多的内存空间时,可以使用 `realloc` 来扩展或缩小原本的内存区域。
以下是一个简单的 `realloc` 指针数组的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr; // 初始化一个未初始化的指针
size_t original_size = 5; // 初始数组大小为 5
arr = malloc(original_size * sizeof(int)); // 分配初始内存
if (arr == NULL) {
perror("Memory allocation failed");
return 1;
}
// 假设我们已经为数组填充了一些元素
for (size_t i = 0; i < original_size; i++) {
arr[i] = i;
}
// 现在我们想将数组大小扩展到 10
size_t new_size = 10;
arr = realloc(arr, new_size * sizeof(int)); // 用新大小重新分配内存
if (arr == NULL) {
perror("Memory reallocation failed");
free(arr); // 释放原内存,即使分配失败也要确保资源释放
return 1;
}
// 检查是否成功扩展,并检查新数组的值
if (new_size > original_size) {
for (size_t i = original_size; i < new_size; i++) {
printf("arr[%zu] = %d\n", i, arr[i]); // 打印新添加的元素
}
}
// 最后记得释放不再需要的原始内存
free(arr);
return 0;
}
```
在这个例子中,我们首先为一个大小为 5 的数组分配了内存,然后使用 `realloc` 将其扩展到大小为 10。如果扩展成功,程序会打印出新分配的元素。注意在任何时候,如果内存分配失败,都应该释放之前分配的内存以避免内存泄漏。
相关问题:
1. `realloc` 在什么情况下会被使用?
2. 如果 `realloc` 返回空指针,意味着什么?
3. 如何处理 `realloc` 后的新内存地址和旧内存地址的关系?
阅读全文