C++和C語言的區別(二)——動態開闢記憶體的區別與new的使用
阿新 • • 發佈:2019-01-09
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;
}
可以看到,使用方式的思想大致相同,只是使用的關鍵字不同而已。