C语言realloc()
时间: 2023-11-03 16:22:37 浏览: 113
realloc函数的使用
realloc() 是C语言中的一个标准库函数,用于重新分配之前通过 malloc() 或 calloc() 分配的内存块的大小。它的函数原型为:
```c
void *realloc(void *ptr, size_t size);
```
其中,ptr 是之前分配内存块的指针,size 是要重新分配的内存块的新大小。realloc() 函数有以下几种情况:
1. 如果 ptr 是 NULL,那么 realloc() 的行为等同于 malloc(size),即分配一个新的内存块。
2. 如果 size 是 0,那么 realloc() 的行为等同于 free(ptr),即释放之前分配的内存块。
3. 如果 ptr 不是 NULL 且 size 不为 0,那么 realloc() 会尝试重新分配 ptr 指向的内存块。如果分配成功,返回一个指向新分配内存块的指针;如果失败,返回 NULL,并且原来的内存块保持不变。
需要注意的是,当调用 realloc() 时,可能会导致之前指向内存块的指针失效,因此在使用 realloc() 分配的新内存块后,建议将其赋值给一个新的指针变量。
例如,下面是一个使用 realloc() 的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = malloc(5 * sizeof(int)); // 分配一个包含 5 个 int 元素的内存块
// 使用 ptr 操作内存块
ptr = realloc(ptr, 10 * sizeof(int)); // 将内存块的大小扩展为 10 个 int 元素
// 使用扩展后的内存块进行操作
free(ptr); // 释放内存块
return 0;
}
```
以上示例中,我们首先使用 malloc() 分配了一个包含 5 个 int 元素的内存块,然后使用 realloc() 将其扩展为 10 个 int 元素,最后使用 free() 释放了内存块。
阅读全文