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