realloc函数实现数组动态增长

realloc函数实现数组动态增长
realloc函数有两种机制:

#include<stdio.h>
#include<stdlib.h>

int main(){
       
       int *p = ( int*)calloc(10, sizeof( int)); 
       printf( "%p",p);
       for ( int i = 0; i < 10; i++)
       {
              *(p + i) = i;
       }
       
       p = ( int*)realloc(p,60); // 在原来的内存后面补增60个字节
       for ( int i = 10; i < 25; i++)
       {
              *(p + i) = i;
       }

       system( "pause");
       return 0;
}

1. 直接在原来的内存后面补接内存(在内存足够时)


2.当原内存后面的内存不足的时候,就重新找到一块内存,将原内存中的数据复制过去,原内存清空

#include<stdio.h>
#include<stdlib.h>

int main(){
       
       int *p = ( int*)calloc(10, sizeof( int)); //堆上分配内存,返回内存地址
       printf( "%p\n",p);
       for ( int i = 0; i < 10; i++)
       {
              *(p + i) = i;
       }
       
       p = ( int*)realloc(p,10000); //在原来的内存后面补增60个字节
       printf( "%p", p);
       for ( int i = 10; i < 10000; i++)
       {
              *(p + i) = i;
       }

       system( "pause");
       return 0;
}










posted @ 2015-05-26 18:28  外禅内定,程序人生  阅读(728)  评论(0编辑  收藏  举报