realloc函数实现数组动态增长

时间:2015-05-26 20:49:09   收藏:0   阅读:235
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;
}

技术分享


技术分享


技术分享

技术分享


来自为知笔记(Wiz)


原文:http://www.cnblogs.com/ZhangJinkun/p/4531374.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!