Ho una classe in c ++, che ha un costruttore in Matrix.h:
private:
int col;
int row;
bool isValid;
int **matrix;
public:
Matrix(int inputInt);
e nel file Matrix.cpp:
Matrix::Matrix(int inputInt)
{
row=inputInt;
col=inputInt;
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]=0;
isValid=true;
}
e nel main.cpp ho scritto
Matrix a(3);
e ho avuto un errore di segmentazione. Perché ?
risposte:
2 per risposta № 1matrix
è un puntatore a puntatore, è necessario new
matrix
stesso all'inizio.
Matrix::Matrix(int inputInt)
{
row=inputInt;
col=inputInt;
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]=0;
isValid=true;
}
0 per risposta № 2
Il tuo programma contiene comportamenti indefiniti. Non allocare mai spazio di archiviazione per matrix
. Sta solo indicando la spazzatura.