c++中realloc是怎么用的
时间: 2024-05-09 20:20:50 浏览: 72
在C语言中,realloc函数用于重新分配之前用malloc或calloc函数分配的内存块的大小。realloc函数的函数原型如下:
```c
void* realloc(void* ptr, size_t size);
```
其中,ptr是之前分配的内存块的指针,size是要重新分配的内存块的大小。realloc函数会返回一个指向重新分配的内存块的指针,如果重新分配失败,则返回NULL。
使用realloc函数的步骤如下:
1. 用malloc或calloc函数分配一块内存空间;
2. 使用内存空间;
3. 如果需要,使用realloc函数重新分配内存空间;
4. 使用重新分配的内存空间;
5. 使用完毕后,使用free函数释放内存空间。
例如,以下示例代码展示了如何使用realloc函数重新分配动态分配的数组的大小:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int* arr = (int*)malloc(5 * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.");
exit(1);
}
for (int i = 0; i < 5; i++) {
arr[i] = i;
}
// 扩展数组大小到10
arr = (int*)realloc(arr, 10 * sizeof(int));
if (arr == NULL) {
printf("Memory reallocation failed.");
exit(1);
}
for (int i = 5; i < 10; i++) {
arr[i] = i;
}
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
上述代码先分配了一个大小为5的数组,然后使用for循环将值存储在数组中。接着,使用realloc函数将数组大小扩展到10,然后将剩余的值存储在数组中。最后,使用for循环打印数组的所有值。注意,在使用完动态分配的内存后,需要使用free函数释放内存以避免内存泄漏。
阅读全文