// MaxMinDisTest.cpp :
#include "stdafx.h"
#include <iostream>
using namespace std;
inline int *** newArray3(int row, int col,int cha){
int *** p3;
p3 = new int**[cha];
for (int i = 0; i < cha; i++) {
p3[i] = new int*[row];
for (int j = 0; j < row; j++)
p3[i][j] = new int[col];
}
return p3;
}
inline void initArray3(int ***p3, int row, int col,int cha,int value=0) {
for (int i = 0; i < cha; i++)
for (int j = 0; j < row; j++)
for (int k = 0; k < col; k++)
p3[i][j][k] = i;
}
inline void printArray3(int ***p3, int row, int col, int cha) {
cout << "[";
for (int i = 0; i < cha; i++)
{
cout << "[";
for (int j = 0; j < row; j++)
{
for (int k = 0; k < col; k++)
cout << p3[i][j][k] << ' ';
cout << endl;
}
cout << "]"<<endl;
}
cout << "]" << endl;
}
inline void deleteArray3(int ***p3, int row, int col, int cha) {
for (int i = 0; i < cha; i++) {
for (int j = 0; j < row; j++) {
delete[]p3[i][j];
}
delete[]p3[i];
}
delete[]p3;
}
int main(void)
{
int row = 5, col = 4, cha = 3;
/*********************** 动态定义三维数组 ******************************/
int *** p3 = newArray3(row, col, cha);//
initArray3(p3,row,col,cha);//赋值
printArray3(p3, row, col, cha);//打印输出结果
deleteArray3(p3, row, col, cha);//想利用一个函数释放new空间,这里没有释放成功,因为调试发现里外指针p3指向不同
return 0;
}
我的问题是:上面的程序deleteArray3函数用于释放三维数组空间,显然这是没有成功释放的,请问该如何使用一个函数释放new空间?
难道只能采用宏定义的方式麽:
#define deleteArray3(p3, row, col, cha) \
for (int i = 0; i < cha; i++) { \
for (int j = 0; j < row; j++) { \
delete[]p3[i][j]; \
} \
delete[]p3[i]; \
} \
delete[]p3; \