我试图在分配新内存之前先删除内存,但我不知道该怎么做,并且在尝试调整矩阵大小时遇到一个问题。
Matrix & operator=(const Matrix &B){
row = B.row;
col = B.col;
if (matrix==0){
matrix = new int*[row];
for (int i = 0; i < row; ++i)
matrix[i] = new int[col];
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
matrix[i][j] = B.matrix[i][j];
}
}
return *this;
}
例如(调整大小)
Matrix matrixA(1, 1);
Matrix matrixB(2, 2);
matrixA = matrixB;
谢谢你和最好的问候
最佳答案
在每一行然后在矩阵上使用 delete[]
。
if (matrix!=NULL){
for (int i = 0; i < row; ++i)
delete[] matrix[i];
delete[] matrix;
}
row = B.row;
col = B.col;
matrix = new int*[row];
for (int i = 0; i < row; ++i)
matrix[i] = new int[col];
请注意,这不会复制源矩阵的内容。为此需要另一个循环
for (int i = 0; i < row; ++i)
for (int j = 0; j < col; ++j)
matrix[i][j] = B.matrix[i][j];
关于c++ - C++中的赋值运算符删除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30763995/