使用realloc函数需注意

//若定义静态数组   int test[100];      则realloc无法为其分配内存空间,内存地址无法改变
/*如果是静态数组是任何方式都不能实现动态增长,因为他的大小是编译时确定的。但是动态申请的内存区域就可以。如下
int *test=(int*)malloc(10*sizeof(int));          */

//测试代码如下

#include <stdio.h>
#include <malloc.h>
int main()
{
int i;

//int test[10];
int *test=(int*)malloc(10*sizeof(int));  //起初分配10个空间
for(i=0;i<10;i++)
 test[i]=i;           //存入10个数据

for(i=0;i<20;i++)
printf("%5d",test[i]);    //输出20个数据
printf(" ");
int *p;
p=test;

p=(int *)realloc(p,sizeof(int)*20);  //重新分配20个空间
for(i=10;i<20;i++)
test[i]=i+100;          //再存入10个数据,总共20个数据

for(i=0;i<20;i++)
{
printf("%7d",test[i]);
}


return 0;
}

结果如下

结果正常

 ——————————————————————————————————————————————————————————————————————————

若用int test[10]静态数组定义,结果如下

结果错误

原文地址:https://www.cnblogs.com/xiaofangfang/p/5592529.html