realloc的用法
时间: 2023-08-23 14:16:19 浏览: 100
realloc函数的使用
`realloc()`函数是C标准库中的一个函数,用于重新分配已经分配的内存空间。其函数原型如下:
```
void* realloc(void* ptr, size_t size);
```
其中,`ptr`是指向要重新分配的内存空间的指针,`size`是重新分配的大小。`realloc()`函数的返回值为指向重新分配内存空间的指针。
`realloc()`函数的使用方法如下:
1. 如果要扩展内存空间,则需要传入原指针和新的大小,例如:
```
int* arr = (int*)malloc(10 * sizeof(int)); // 分配10个int类型的空间
int* new_arr = (int*)realloc(arr, 20 * sizeof(int)); // 扩展到20个int类型的空间
if (new_arr != NULL) {
arr = new_arr;
} else {
// 扩展失败,处理异常
}
```
上述代码中,`realloc()`函数将`arr`指向的内存空间扩展到了20个int类型的空间大小。如果扩展成功,则返回指向扩展后内存空间的指针,此时需要将`arr`指向该指针,如果扩展失败,则返回空指针。
2. 如果要缩小内存空间,则需要传入原指针和新的大小,例如:
```
int* arr = (int*)malloc(10 * sizeof(int)); // 分配10个int类型的空间
int* new_arr = (int*)realloc(arr, 5 * sizeof(int)); // 缩小到5个int类型的空间
if (new_arr != NULL) {
arr = new_arr;
} else {
// 缩小失败,处理异常
}
```
上述代码中,`realloc()`函数将`arr`指向的内存空间缩小到了5个int类型的空间大小。如果缩小成功,则返回指向缩小后内存空间的指针,此时需要将`arr`指向该指针,如果缩小失败,则返回空指针。
3. 如果要释放内存空间,则需要传入原指针和0,例如:
```
int* arr = (int*)malloc(10 * sizeof(int)); // 分配10个int类型的空间
realloc(arr, 0); // 释放内存空间
```
上述代码中,`realloc()`函数将`arr`指向的内存空间释放掉,等价于调用`free()`函数。
需要注意的是,使用`realloc()`函数时需要注意内存空间的有效性和指针的有效性,避免出现未定义行为。
阅读全文