先看一下代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p1,*p2;
int i;
p1=(int *)malloc(sizeof(int)*4);//分配4个int长度的存储空间。
for(i=0;i<5;i++)
{
p1[i]=i;
printf(" %d",p1[i]);
}
p2=(int *)realloc(p1,sizeof(int)*8);
for(i=0;i<8;i++)
{
p2[i]=i;
printf(" %d",p2[i]);
}
free(p2);
return 0;
}
这里涉及到了三个函数,分别是malloc() ,realloc(), free(), 它们是放在头文件stdlib.h中其中malloc()是申请一个动态储存空间,realloc()是更改已配置的空间,free()是释放空间,malloc()的函数原型是void *malloc(unsigned int size);size一般与sizeof()相关;注意上例中我们只需释放p2,因为在调用realloc()函数是已经将p1给释放了,当然你也可以改为p1=(int *)realloc(p1,sizeof(int)*8)。但这个也是先释放p1再给它分配,虽然有可能先后p1的首地址都一样。