Необработанное исключение по адресу 0x5B19A9E8 нарушение прав доступа при чтении
Ошибка в деструкторе, объясните, пожалуйста (файл FirstClass.cpp). Необработанное исключение по адресу 0x5B19A9E8 нарушение прав доступа при чтении.
FirstClass.h
protected:
int **Matr;
int m;
int n;
void Create();
public:
//constr, destr
Matrix() : m(8), n(8) { Create(); }
Matrix(int i) : m(i), n(i) { Create(); }
Matrix(int i, int j) : m(i), n(j) { Create(); }
~Matrix();
//Metods
int& Element(int i, int j);
void MultiplyBy(int x);
void Display();
};
#endif
FirstClass.cpp
#include "stdafx.h"
#include "FirstClass.h"
#include <iostream>
using namespace std;
void Matrix::Create()
{
Matr = new int*[m];
for (int z = 0; z < m; z++)
Matr[z] = new int[n];
}
Matrix::~Matrix()
{
if (Matr)
{
for (int z = 0; z < m; z++)
{
delete[] Matr[z];//////Vetoi stroke
}
delete[] Matr;
}
}
int& Matrix::Element(int i, int j)
{
if (i < m && j < n)
return Matr[i][j];
else
cout << "Error: 1";
}
void Matrix::MultiplyBy(int x)
{
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
Matr[i][j] *= x;
}
void Matrix::Display()
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
cout.width(1);
cout << Matr[i][j];
}
cout << endl;
}
}
program1.cpp
#include "stdafx.h"
#include "FirstClass.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
using namespace std;
struct Tree
{
Tree *l, *r;
Matrix arr;
};
int value = 0;
void Add(Matrix arr, Tree **Node)
{
if ((*Node == NULL))
{
(*Node) = new Tree;
(*Node)->l = (*Node)->r = NULL;
(*Node)->arr = arr;
}
else
if (value % 2 == 0) Add(arr, &(*Node)->l);
else Add(arr, &(*Node)->r);
value++;
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
const int Razm = 8;
Matrix Mas(Razm, Razm);
for (int i = 0; i < Razm; i++)
for (int j = 0; j < Razm; j++)
Mas.Element(i, j) = rand() % 2;
cout << "Matrix: " << endl;
Mas.Display();
Tree *MyTree = NULL;
Add(Mas, &MyTree);//sozdali koren`
system("pause");
return 0;
}
Источник: Stack Overflow на русском