C语言realloc()函数,重新分配内存
realloc()函数
C语言stdlib.h标准库中的realloc()函数,可用于将之前动态分配内存进行重新分配,以动态地、灵活地增加或减少已分配的内存的大小。注意,realloc()函数一般只用于重新分配通过calloc()、malloc()和realloc()函数动态分配的内存。realloc()函数的返回值为一个指向重新分配好内存的地址的指针。realloc()语法如下:
void *realloc(void *ptr, int size);
realloc()参数
参数 | 描述 |
---|---|
ptr | 指针,指向需要重新分配内存的地址 |
size | int类型,指定新分配的内存块的大小 |
提示:如果size的值为0,realloc()函数将释放内存,并返回NULL指针。
realloc()实例代码
下面实例使用malloc()函数动态分配一个sizeof(int)大小的内存,并输出,之后使用前面章节介绍的free()函数来释放内存空间,并将指针指向NULL,避免悬挂指针:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main() {
char *ptr = malloc(100*sizeof(char));
if(ptr == NULL){
printf("未动态分配内存\n");
}else{
printf("动态分配内存完成\n");
strcpy(ptr,"x1y1z1.com");
printf("%s\n", ptr);
}
// realloc()函数重新分配内存
ptr = realloc(ptr, 150*sizeof(char));
if(ptr == NULL){
printf("重新动态分配内存未完成");
}else{
printf("重新动态分配内存完成");
}
free(ptr);
// 指针指向NULL,避免悬挂指针
ptr = NULL;
return 0;
}
代码运行后,得到输出值为:
动态分配内存完成
x1y1z1.com
重新动态分配内存完成
免责声明:内容仅供参考,不保证正确性。