C语言- calloc(申请空间初始化)-LMLPHP

calloc(申请空间初始化)

语法格式

在C语言中,`calloc` 和 `realloc` 是用于动态内存分配的两个函数。它们都定义在头文件 `<stdlib.h>` 中。

1. `calloc`

函数用于在内存的动态存储区分配空间,并初始化每个字节为 0。其函数原型如下:


void *calloc(size_t num, size_t size);

- `num`: 分配块的数量。
- `size`: 每个块的大小(以字节为单位)。
`calloc` 返回一个指向分配内存的指针。如果分配失败,则返回 `NULL`。

———————————————————————————————————————————

calloc函数的使用

C语言- calloc(申请空间初始化)-LMLPHP 我们直接看是不直观的,我们可以这样理解

malloc(5*sizeof(int))=calloc(5,sizeof(int))

这两个是等价的 

calloc函数其实和malloc函数本质都是一样的唯一不一样就是,calloc函数在开辟空间的时候会进行初始化,当然 calloc函数初始化,那运行速度也会比malloc慢一点。malloc函数初始化, 会快一点

C语言- calloc(申请空间初始化)-LMLPHP

其他的没区别

——————————————————————————————————————————— 

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一模一样,只是换了一下函数,其他是没有变化的。 

C语言- calloc(申请空间初始化)-LMLPHP

03-30 16:13