一、一维数组
1.申请Heap Memory(malloc/free)
int* Arr = (int*)malloc(ArrSize * sizeof(int)); // 申请堆内存
memset(Arr, 0, ArrSize * sizeof(int));
free(Arr);
2.申请Stack Memory(new/delete)
new/delete 会调用构造函数/析构函数进行对象初始化与销毁
int* Arr = new int[ArrSize]; // 仅在自由存储区中申请内存,不初始化
int* Arr = new int[ArrSize](); // 初始化数组全为 0
int* Arr = new int[5]{ 1,2,3,4,5 }; // 初始化数组为 1,2,3,4,5(VS2015支持)
int* Arr = new int[5]{ 1 }; // 初始化数组为 1,0,0,0,0
delete[] Arr;
二、二维数组
1.申请Heap Memory(malloc/free)
int **Arr = (int**)malloc(ArrRow * sizeof(int *)); // 先行
for (int i = 0; i < ArrRow; i++)
{
Arr[i] = (int*)malloc(ArrCol * sizeof(int)); // 后列
memset(Arr[i], 0, ArrCol * sizeof(int));
}
for (int i = 0; i < 3; i++)
{
free(Arr[i]);
}
free(Arr);
2.申请Stack Memory(new/delete)
int **Arr = new int *[ArrRow];
for (int i = 0; i < ArrRow; i++)
{
Arr[i] = new int[ArrCol]();
}
for(i = 0; i < ArrRow; i++)
{
delete[] Arr[i];
}
delete[] Arr;
Reference:
https://blog.csdn.net/yuqinjh/article/details/79095787
https://blog.csdn.net/Librarvl/article/details/90147388
https://www.cnblogs.com/ywliao/articles/8116622.html