我有一个 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
分配任何存储。它只是指向垃圾。