calloc(申请空间初始化)
语法格式
在C语言中,`calloc` 和 `realloc` 是用于动态内存分配的两个函数。它们都定义在头文件 `<stdlib.h>` 中。
1. `calloc`
函数用于在内存的动态存储区分配空间,并初始化每个字节为 0。其函数原型如下:
void *calloc(size_t num, size_t size);
- `num`: 分配块的数量。
- `size`: 每个块的大小(以字节为单位)。
`calloc` 返回一个指向分配内存的指针。如果分配失败,则返回 `NULL`。
———————————————————————————————————————————
calloc函数的使用
我们直接看是不直观的,我们可以这样理解
malloc(5*sizeof(int))=calloc(5,sizeof(int))
这两个是等价的
calloc函数其实和malloc函数本质都是一样的唯一不一样就是,calloc函数在开辟空间的时候会进行初始化,当然 calloc函数初始化,那运行速度也会比malloc慢一点。malloc函数初始化, 会快一点
其他的没区别
———————————————————————————————————————————
calloc和free代码
int main()
{
//malloc不初始化开辟空间
//开辟20个字节的空间大小
int* p = (int*)calloc(5 , sizeof(int));
if (p == NULL)
{
perror("malloc:");//这里是打印错误信息,
return 1;
}
for (int i = 0; i < 5; i++)//这里是打印出来开辟的空间 赋值之后进行打印
{
//*(p + i) = i + 1;//这里是进行赋值 赋值从1开始
printf("%d ", *(p + i));//这里是打印出来
}
free(p);//这里进行指针的释放
p = NULL;//防止野指针的问题,我们指向空指针
return 0;
}
这里我们可以看到和malloc一模一样,只是换了一下函数,其他是没有变化的。