创建对象c ++时出现分段错误

时间:2016-05-28 12:00:09

标签: c++ oop segmentation-fault

我有一个c ++类,它在Matrix.h中有一个构造函数:

private:
int col;
int row;
bool isValid;
int **matrix;

public:
Matrix(int inputInt);

并在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;
}

在main.cpp中我写了

Matrix a(3);

我遇到了分段错误。那是为什么?

2 个答案:

答案 0 :(得分:2)

matrix是指向指针的指针,您首先需要new matrix

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;
}

答案 1 :(得分:0)

您的程序包含未定义的行为。您永远不会为matrix分配任何存储空间。它只是指着垃圾。