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
",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;
}



