• 1.摘要
  • 2.基本信息
  • 3.函数说明
  • 3.1.语法
  • 3.2.头文件
  • 3.3.功能
  • 3.4.返回值
  • 3.5.注意
  • 4.应用举例
  • 4.1.举例1
  • 4.2.举例2
  • 5.内存分配
  • 6.返回情况
  • 7.特殊情况
  • 8.使用总结

realloc

realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);

基本信息

  • 中文名

    动态内存调整

  • 外文名

    reset allocation

  • 别称

    realloc

  • 原型

    extern void *realloc

  • 相关函数

    malloccallocfree_alloca

  • 注意事项

    当内存不再使用时应使用free()函数将内存块释放

函数说明

语法

指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。

新的大小可大可小(如果新的大小大于原内存大小,则新分配部分不会被初始化;如果新的大小小于原内存大小,可能会导致数据丢失)

头文件

#include <stdlib.h> 有些编译器需要#include <malloc.h>,在TC2.0中可以使用alloc.h头文件

功能

先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

返回值

如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

注意

当内存不再使用时,应使用free()函数将内存块释放。

应用举例

举例1

从这个例子可以看出realloc函数的功能。

运行环境:ubuntu 12.04 GCC 4.6.3

运行结果:

malloc 0x904f008realloc 0x904f0080 1 2 3 4 5 6 7 8 9

举例2