下面是我在百科里面复制的一段讲realloc的DEMO
#include
#include
int main()
{ int i;
int *pn=(int *)malloc(5*sizeof(int));
printf("%p\n",pn);
for(i=0;i<5;i++)
scanf("%d",&pn);
*******************************
pn=(int *)realloc(pn,10*sizeof(int));
printf("%p\n",pn); for(i=0;i<5;i++)
printf("%3d",pn);
printf("\n");
free(pn);
return 0;
}
我觉得 在*******处应该加一段:q=pn。
不然当返回值为的时候,以前pn的内容不是丢了?
资料上是这么说的:返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
如果现在分配不成功,那么(int *)realloc(pn,10*sizeof(int))的值就是NULL,pn=(int *)realloc(pn,10*sizeof(int));这个复制语句,这样的话,pn不是NULL了。那现在我又要用原来pn指向的内容怎么办?
|