目录
前提须知:
函数介绍:
原型如下:
申请空间:
判断是否申请成功:
释放空间:
calloc与malloc的相同之处与不同之处:
相同之处:
不同之处:
举例:
calloc:
malloc:
前提须知:
http://t.csdn.cn/bw07Ohttp://t.csdn.cn/bw07O
函数介绍:
calloc 函数也⽤来动态内存分配。
原型如下:
void* calloc (size_t num, size_t size);
- num 表示多少个元素
- size表示的是该元素类型所需要的字节数
例如:
calloc(10,sizeof(int));
10个元素 4个字节——表示开辟十个int类型的元素的字节大小
申请空间:
int main()
{
int *p = (int*)calloc(10,sizeof(int));
return 0;
}
calloc申请空间成功也会返回申请空间的起始地址,申请失败也会返回空指针(NULL)
判断是否申请成功:
if (p == NULL)
{
perror("calloc");
return 1;
}
释放空间:
free(p);
p = NULL;
calloc与malloc的相同之处与不同之处:
相同之处:
- 都是再内存堆区中申请空间。
- 申请成功都会返回申请空间的起始地址,申请失败都会返回空指针NULL
- 都是使用free函数进行释放申请的空间。
不同之处:
- 就是函数内部的参数不同
- calloc申请的空间默认会被初始化为,malloc申请的空间不会初始化。
举例:
calloc:
int main()
{
int *p = (int*)calloc(10,sizeof(int));
if (p == NULL)
{
perror("calloc");
return 1;
}
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d",p[i]);
}
free(p);
p = NULL;
return 0;
}
malloc:
int main()
{
int *p = (int*)malloc(10*sizeof(int));
if (p == NULL)
{
perror("calloc");
return 1;
}
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d\n",p[i]);
}
free(p);
p = NULL;
return 0;
}