1. 程式人生 > >C++和C語言的區別(二)——動態開闢記憶體的區別與new的使用

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

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