Cześć,
Mam klasę przechowującą tablicę[alokowaną dynamicznie] dwuwymiarową, reprezentującą macierz.
Matrix::Matrix(int row, int col)
{
this->row = row;
this->col = col;
m_matrix = new double *[this->row];
for(auto i = 0; i < this->row; i++)
m_matrix[i] = new double[this->col];
}
Matrix::Matrix(double ** matrix, int row, int col)
{
this->row = row;
this->col = col;
m_matrix = new double *[this->row];
for(auto i = 0; i < this->row; i++)
m_matrix[i] = new double[this->col];
m_matrix = matrix;
}
Matrix::Matrix(const Matrix & matrix)
{
this->row = matrix.row;
this->col = matrix.col;
m_matrix = new double *[this->row];
for(auto i = 0; i < this->row; i++)
m_matrix[i] = new double[this->col];
m_matrix = matrix.m_matrix;
}
Destruktor prezentuje się następująco:
Matrix::~Matrix()
{
for(auto i = 0; i < row; i++){
delete [] m_matrix[i];
}
}
Według mnie destruktor jest błędny. Po wyjściu z pętli for, powinno być jeszcze delete [] m_matrix.. Niestety powyższy kod działa, a ten z usunięciem m_matrix już nie - co może być przyczyną?
Dodam, że po zastosowaniu wersji z delete [] m_matrix program wyrzuca dużo syfu.