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内核编程