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