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



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

private:
int col;
int row;
bool isValid;
int **matrix;
public:
Matrix(int inputInt);

在矩阵.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;
}

总的来说.cpp我写道

Matrix a(3);

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

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

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

相关内容

  • 没有找到相关文章

最新更新