realloc如何使用
时间: 2024-02-21 22:49:26 浏览: 101
realloc函数是C语言标准库中的一个函数,用于重新分配内存块的大小。它的函数原型如下:
```c
void *realloc(void *ptr, size_t size);
```
其中,ptr是指向已分配内存块的指针,size是新的内存块大小。该函数返回一个指向重新分配内存块的指针。
使用realloc函数时,需要注意以下几点:
1. 如果ptr为NULL,则realloc函数的行为类似于malloc函数,即它将分配一个新的内存块并返回指向该内存块的指针。
2. 如果size为0,则realloc函数的行为类似于free函数,即它将释放ptr指向的内存块,并返回NULL指针。
3. 如果ptr不为NULL且size大于0,则realloc函数将尝试重新分配ptr指向的内存块大小为size字节。如果内存分配成功,则返回指向重新分配后内存块的指针;如果失败,则返回NULL指针,并且原来的内存块保持不变。
下面是一个使用realloc函数的示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
// 分配一个初始大小为4个整数的内存块
ptr = (int *)malloc(4 * sizeof(int));
if (ptr == NULL) {
printf("内存分配失败\n");
return 1;
}
// 重新分配内存块的大小为8个整数
ptr = (int *)realloc(ptr, 8 * sizeof(int));
if (ptr == NULL) {
printf("内存重新分配失败\n");
return 1;
}
// 使用重新分配后的内存块
for (int i = 0; i < 8; i++) {
ptr[i] = i;
}
// 打印重新分配后的内存块内容
for (int i = 0; i < 8; i++) {
printf("%d ", ptr[i]);
}
// 释放内存块
free(ptr);
return 0;
}
```
上述示例中,首先使用malloc函数分配了一个初始大小为4个整数的内存块,然后使用realloc函数将其重新分配为大小为8个整数的内存块,并使用for循环对重新分配后的内存块进行赋值和打印操作。最后,使用free函数释放了该内存块。
希望上述示例能够帮助您理解如何使用realloc函数。如果您有任何问题,请随时提问。
阅读全文