malloc 、calloc和realloc的用法
1、malloc是动态内存最基本的用法一般形式为:
int *p=(int*)malloc(n*sizeof(int));
2、realloc是扩大申请的内存
int *p=(int*)realloc(p,n*sizeof(int));
其中n 为申请的内存新的大小
//realloc
int main()
{
int *p = (int *)malloc(10*sizeof(int));
printf("%d\n",p);
for(int i=0;i<10;i++)//模拟p被使用
{
p[i] = i;
}
p = (int *)realloc(p,20*sizeof(int));
printf("%d\n",p);
//下面等同realloc
/*
int *q = (int *)malloc(20*sizeof(int));
for(int i=0;i<10;i++)
{
q[i] = p[i];
}
free(p);
p = q;
q = NULL;*/
free(p);
return 0;
}
上述过程中,当申请的10个内存不够用时,利用realloc再申请10个,此时表达式中n=20;
3、calloc
calloc是将分配内存中的一个数组元素初始化为0。
int *p=(int*)calloc(n*sizeof(int));