函数简介

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

 

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

 

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

 

  功能:先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

 

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

 

  注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。

应用举例

 

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

 

 
  
  1. #include<stdio.h>     
  2. #include<stdlib.h>     
  3. int main()     
  4. {     
  5.  int i;     
  6.  int *pn=(int *)malloc(5*sizeof(int));     
  7.  printf("%p\n",pn);     
  8.  for(i=0;i<5;i++)     
  9.   scanf("%d",&pn[i]);     
  10.     
  11.  pn=(int *)realloc(pn,10*sizeof(int));    
  12.     
  13.  printf("%p\n",pn);     
  14.  for(i=0;i<5;i++)     
  15.   printf("%3d",pn[i]);     
  16.  printf("\n");     
  17.  free(pn);     
  18.  return 0;