malla = new Celula**[n + 2];
for(int i = 0 ; i < n + 2 ; ++i){
malla[i] = new Celula*[m + 2];
for(int j = 0 ; j < m + 2 ; ++j){
malla[i][j] = new Celula[m];
}
}
我正在编写此代码,并像这样分配内存(我想要一个指向Celula的
n*m
指针数组,可以吗?现在我需要一个析构函数。现在,我不知道如何访问此数组中的对象,并且:
malla[i][j].setestado(true);
不起作用。
最佳答案
认真考虑@konrad的建议。如果您想与原始数组一起使用,可以执行以下操作:
解除分配:
for(int i = 0 ; i < n + 2 ; ++i)
{
for(int j = 0 ; j < m + 2 ; ++j) delete[] malla[i][j] ;
delete[] malla[i];
}
delete[] malla;
要访问对象:
malla[i][j][_m].setestado(true);
编辑:
如果
malla[i][j]
是仅指向对象的指针,则析构函数/释放将如下所示: for(int i = 0 ; i < n + 2 ; ++i)
{
for(int j = 0 ; j < m + 2 ; ++j) delete malla[i][j] ;
delete[] malla[i];
}
delete[] malla;
访问对象/成员可以像
(*malla[i][j]).setestado(true);
或malla[i][j]->setestado(true);
一样完成关于c++ - 如何删除此二维指针数组?制作一个析构函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9647776/