我有一个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);
我遇到了分段错误。那是为什么?
答案 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
分配任何存储空间。它只是指着垃圾。