calloc和realloc

本文探讨了calloc与malloc在内存分配上的差异,重点讲解了calloc初始化内存的特点,以及realloc在内存扩展时的两种操作方式。通过实例演示了如何在C语言中使用这些函数,并介绍了它们在实际编程中的应用场景和注意事项。
摘要由CSDN通过智能技术生成
  1. calloc和malloc一样都是在堆区分配内存
  2. 不同点在于 calloc 会将分配的内存初始化为0
  3. realloc重新在堆区分配内存
    1. 如果分配的内存比原来要大,这个时候有两种情况出现
    2. 原有空间后序有足够大的空闲空间,那么直接在原有空间后继续开辟内存,返回原有空间的首地址
    3. 原有空间后序没有足够大空闲空间,重新会分配一个足够大的空间,并且将原有空间的内容拷贝到新空间下,释放原有空间,将新空间的首地址返回
void test01()
{
	int * p = malloc(sizeof(int)* 10);

	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", p[i]);
	}

	if (p != NULL)
	{
		free(p);
		p = NULL;
	}
}

 

void test01()
{

	int * p = calloc(10, sizeof(int)); //和malloc不同的地方在于 将堆区分配的内容初始化为0

	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", p[i]);
	}

	if (p != NULL)
	{
		free(p);
		p = NULL;
	}
}

 

void test02()
{
	int * p = malloc(sizeof(int) * 10);

	printf("%d\n", p);

	for (int i = 0; i < 10; i++)
	{
		p[i] = i;
	}


	p = realloc(p, sizeof(int) * 10);

	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", p[i]);
	}

	printf("%d\n", p);


	if (p != NULL)
	{
		free(p);
		p = NULL;
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值