【发布时间】:2017-03-02 17:17:48
【问题描述】:
我需要构造一个矩阵类并使用特定的函数为其赋值。
这是我的代码:
class MATRIX
{
int row, col;
double **p;
public:
MATRIX(int, int);
void Set(int, int, double);
~MATRIX();
};
MATRIX::MATRIX(int x, int y)
{
row = x;
col = y;
p = new double*[x];
for (int i = 0; i < x; i++)
{
p[i] = new double[y];
}
}
void MATRIX::Set(int a, int b, double d)
{
p[a][b] = d;
}
MATRIX::~MATRIX()
{
for (int i = 0; i < row; i++)
delete[] p[i];
delete[] p;
}
int main()
{
MATRIX A(2, 3); // Initializes a matrix with size 2x3
MATRIX B(7, 4); // Initializes a matrix with size 7x4
A.Set(1, 2, 4.7); // Sets the value of A[1][2] to 4.7
B.Set(0, 3, 2.9); // Sets the value of B[0][3] to 2.9
}
我在Set 函数中的调试器中看到了这个:
this->p was 0x1110112
我该如何解决?
【问题讨论】:
-
什么显示了这个错误?你的调试器?发生了什么?
-
放弃容易出错的手动内存管理,只使用
std::vector(或至少使用智能指针 - 我们不再是 98 年 - 现代 C++ 是 比这个杂碎好多了)。 -
p是 0x1110112 有什么问题?应该是什么?