malloc 和realloc连用
时间: 2023-11-27 20:47:08 浏览: 42
在C语言中,malloc函数用于动态分配内存,realloc函数用于重新分配已经分配的内存。当需要重新分配内存时,可以使用realloc函数将已经分配的内存块的大小调整为新的大小。如果新的大小比原来的大小小,则realloc函数会将多余的部分释放掉。如果新的大小比原来的大小大,则realloc函数会在原来的内存块后面分配新的内存块,并将原来的内存块中的数据复制到新的内存块中,然后释放原来的内存块。
下面是一个使用malloc和realloc连用的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr;
int n, i;
// 分配初始内存
n = 5;
printf("初始分配内存:\n");
ptr = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
ptr[i] = i;
printf("%d ", ptr[i]);
}
// 重新分配内存
n = 10;
printf("\n重新分配内存:\n");
ptr = (int*)realloc(ptr, n * sizeof(int));
for (i = 5; i < n; i++) {
ptr[i] = i;
printf("%d ", ptr[i]);
}
// 释放内存
free(ptr);
return 0;
}
```
该程序首先使用malloc函数分配了5个整型变量的内存,并将它们初始化为0~4。然后使用realloc函数将内存大小重新分配为10个整型变量,并将新增的5个整型变量初始化为5~9。最后使用free函数释放了内存。