C语言中realloc的用法
时间: 2023-07-08 10:06:38 浏览: 69
`realloc` 函数在 C 语言中用于重新分配已经分配过的内存块的大小。其函数原型如下:
```c
void *realloc(void *ptr, size_t size);
```
其中,`ptr` 是指向之前分配内存的指针,`size` 是需要重新分配的内存大小(单位是字节)。如果 `ptr` 为 `NULL`,那么 `realloc` 会像 `malloc` 一样工作,即分配一个新的内存块,并返回指向该内存块的指针。如果 `size` 为 0,那么 `realloc` 的行为就类似于 `free`,即释放 `ptr` 所指向的内存块,并返回 `NULL`。
如果 `realloc` 操作成功,它会返回一个指向重新分配内存的指针。如果失败,则会返回 `NULL`,并且原来的内存块保持不变。
下面是一个使用 `realloc` 函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr, n1, n2, i;
// 初始化数组
n1 = 5;
ptr = (int*) malloc(n1 * sizeof(int));
printf("Size of array before realloc: %ld\n", sizeof(ptr) / sizeof(int));
for (i = 0; i < n1; ++i) {
ptr[i] = i + 1;
printf("%d ", ptr[i]);
}
// 重新分配内存
n2 = 10;
ptr = (int*) realloc(ptr, n2 * sizeof(int));
printf("\nSize of array after realloc: %ld\n", sizeof(ptr) / sizeof(int));
for (i = n1; i < n2; ++i) {
ptr[i] = i + 1;
}
for (i = 0; i < n2; ++i) {
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}
```
上面的代码中,首先使用 `malloc` 函数分配了一个长度为 5 的整型数组,并将它们初始化为 1-5。然后使用 `realloc` 函数将数组的大小重新分配为 10,新添加的元素被初始化为 6-10。最后使用 `free` 函数释放动态分配的内存。
阅读全文