C++ 数组指针数组的析构函数

C++ 数组指针数组的析构函数,c++,arrays,pointers,destructor,C++,Arrays,Pointers,Destructor,好的,我有一个构造函数: Board::Board(int nRows, int nCols){ numRows=nRows; numCols=nCols; int** board=new int*[numRows]; for(int i=0; i<numRows; i++){ board[i]=new int[numCols]; for(int j=0; j<numCols; j++){ b

好的,我有一个构造函数:

Board::Board(int nRows, int nCols){
    numRows=nRows;
    numCols=nCols;

    int** board=new int*[numRows];
    for(int i=0; i<numRows; i++){
        board[i]=new int[numCols];

        for(int j=0; j<numCols; j++){
            board[i] [j]=-1;
        }
    }
}
Board::Board(int-nRows,int-ncol){
numRows=nRows;
numCols=nCols;
int**board=新int*[numRows];

对于(int i=0;i对于使用
new[]
分配的所有内容,请调用
delete[]
,对于使用
new
分配的所有内容,请调用
delete

您正在执行一个顶级
new[]
分配(因此一个
delete[]
),另一个
numRows
new[]
分配,每个分配都需要自己的
delete[]

取消分配时应颠倒顺序


实际代码留作练习。

对于使用
new[]
分配的所有内容,请调用
delete[]
,对于使用
new
分配的所有内容,请调用
delete

您正在执行一个顶级
new[]
分配(因此一个
delete[]
),另一个
numRows
new[]
分配,每个分配都需要自己的
delete[]

取消分配时应颠倒顺序


实际代码留作练习。

第一点:不要这样做。不要这样做。使用
std::vector
存储数据,并使用用户运算符重载以允许客户端使用二维尺寸索引到其中

这就是说,你可能会坚持这样做,因此你最好这样做,至少要知道基本的想法:把你原来的
新的
换成可以说是颠倒的。因此,你从以下几点开始:

int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
    board[i]=new int[numCols];

不过我要重复一遍:只使用一个更干净。

第一点:不要这样做。不要这样做。使用
std::vector
来存储数据,使用用户操作符重载来允许客户端使用二维维度来索引数据

这就是说,你可能会坚持这样做,因此你最好这样做,至少要知道基本的想法:把你原来的
新的
换成可以说是颠倒的。因此,你从以下几点开始:

int** board=new int*[numRows];
for(int i=0; i<numRows; i++){
    board[i]=new int[numCols];

不过我要重复一遍:只使用一个更干净。

使用
std::vector;

但这是你需要的

for(int i=0; i<numRows; i++){
        delete[] board[i];    //Delete each row allotted inside the for loop
    }
 delete[] board;         //Delete the row/array of pointers

对于(inti=0;i您最好使用
std::vector;

但这是你需要的

for(int i=0; i<numRows; i++){
        delete[] board[i];    //Delete each row allotted inside the for loop
    }
 delete[] board;         //Delete the row/array of pointers

for(inti=0;iUse
std::vector
或更高效的二维包装器,您不需要析构函数(或处理该数组所需的其他成员)。简单规则:使用
delete[]
delete
调用
new[]
new
分别是gross,dude。就是gross。使用
std::vector
或更有效的二维包装器,您将不需要析构函数(或处理该数组所需的其他成员)。简单规则:使用
delete[]
delete
调用
new[]
new
分别是gross,伙计。就是gross。我很想使用向量,我理解向量,但我不允许在这个类中使用向量。请纠正帮助我想使用向量,我理解向量,但我不允许在这个类中使用向量。请纠正帮助