realloc 函数
更多Linux内核驱动开发教程,《Linux内核编程》1~12期,请点击:王利涛老师个人淘宝店:Linux内核编程
realloc函数用来扩展一块内存大小。如果使用malloc/calloc/realloc申请的内存使用完,想扩展一下内存块的大小,可以使用realloc函数:
void *realloc(void *ptr, size_t size)
其中,参数ptr指向要调整的内存块,如果ptr指针参数为NULL,realloc则会重新申请一个新的内存块。
size参数则是新的内存块的大小。
与malloc类似,释放由realloc申请的内存,使用free函数。realloc/free函数的使用示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *p;
p = malloc(10);
strcpy(p, "zhaixue");
printf("*p = %s, p = %p\n", p, p);
p = realloc(p, 15);
strcat(p, ".cc");
printf("*p = %s, p = %p\n", p, p);
free(p);
return 0;
}
程序的运行结果:
*p = zhaixue, p = 0x564c2894a260
*p = zhaixue.cc, p = 0x564c2894a260
通过运行结果,可以看到,调整内存大小后,realloc返回的地址,还是原来的内存块的地址。
驱动开发核心理论,Linux内核开发入门实战视频教程:《Linux内核编程》,具有一线芯片原厂开发经验的驱动工程师录制,详情点击:王利涛老师个人淘宝店:Linux内核编程