- 下面是为一维数组 / 二维数组 / 三维数组 动态分配内存 实现的代码:
// 一维数组动态申请,a数组大小为: n
int *a = new int[n];
// 二维数组动态申请,b数组大小为: n*p
int **b = new int*[n];
for(int i=0; i<n; i++)
{
b[i] = new int[p];
}
// 三维数组动态申请, c数组大小为: m*n*p:
int ***c = new int **[m];
for(int i=0; i<m; i++)
{
c[i]=new int *[n];
for(int j=0; j<n; j++)
{
c[i][j] = new int [p];
}
}
2. 下面图片比较形象的说明为指针分配内存的问题:
3. 当不再需要一个动态分配的多维数组时,可按以下步骤释放它所占用的空间:
- 首先释放在for循环中为每一行所分配的空间。
- 然后释放行指针分配的空间。
// 一维空间释放:
delete []a;
a = 0; //可在释放空间后将a置为0,以防继续访问已被释放的空间。这句可以不要。
// 二维空间释放:
for (int i=0; i<n; i++)
{
delete [] b[i];
}
delete []b;
b = 0; //可在释放空间后将b置为0,以防继续访问已被释放的空间。这句可以不要。
// 三维空间释放:
for (int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
delete []c[i][j];
}
delete []c[i];
}
delete []c;
c = 0; //可在释放空间后将c置为0,以防继续访问已被释放的空间。这句可以不要。