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

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;
}

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

猜你喜欢

转载自blog.csdn.net/HDong99/article/details/86031846