C++和C语言的区别(二)——动态开辟内存的区别与new的使用

14 篇文章 0 订阅

C++中和C语言中都有动态开辟内存的概念,C语言中使用的是库函数malloc和free,而C++中使用的则是关键字new与delete,它们的部分区别如下:

现在我们同时使用两种方式动态开辟二维数组a[5][5]

C语言:

#include <malloc.h>
#include <assert.h>

int main()
{
	//动态开辟二维数组
	int ** arr = (int **)malloc(sizeof(int *)*5);
	assert(arr != NULL);//需要设置断言,防止申请失败后继续使用
	for(int i = 0; i < 5; ++i)
	{
		arr[i] = (int *)malloc(sizeof(int) * 5);
		assert(arr[i] != NULL);
	}

	//释放
	for(int j = 0; j < 5; ++j)
	{
		free(arr[j]);
	}
	free(arr);

	return 0;
}

C++:

int main()
{
	//动态开辟二维数组
	int **brr = new int *[5];
	for(int i = 0; i < 5; ++i)
	{
		brr[i] = new int[5];
	}

	//释放
	for(int j = 0; j < 5; ++j)
	{
		delete brr[j];
	}
	delete brr;
}

 可以看到,使用方式的思想大致相同,只是使用的关键字不同而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值