/ / Errore di segmentazione durante la creazione dell'oggetto c ++ - c ++, oop, errore di segmentazione

Errore di segmentazione durante la creazione dell'oggetto c ++ - c ++, oop, segmentation-fault

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 № 1

matrix è 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.