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;
}
可以看到,使用方式的思想大致相同,只是使用的关键字不同而已。