Понимаю вопрос заезженный, но ответа в уже заданных вопроса я не нашел.
Есть класс Matrix
class Matrix {
private:
int rows, cols;
public:
int **arr;
int GetRows() { return rows; }
int GetCols() { return cols; }
private:
void InitMatrix() {
arr = new int*[rows];
for (int i = 0; i < rows; i++)
arr[i] = new int[cols];
}
public:
Matrix(int rows, int cols) {
this->rows = rows;
this->cols = cols;
InitMatrix();
}
void RFill(int leftBorder, int rightBorder) {
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
arr[i][j] = rand() % (rightBorder + 1 - leftBorder) + leftBorder;
}
void Add(Matrix sarr) {
for (int i = 0; i < this->rows; i++)
for (int j = 0; j < this->cols; j++)
this->arr[i][j] += sarr.arr[i][j];
}
~Matrix() {
for (int i = 0; i < rows; i++)
delete[] arr[i];
delete[] arr;
arr = nullptr;
}
};
Вроде выделяется память правильно, но когда происходит удаление возникает ошибка в деструкторе.
Вызвано исключение по адресу 0x0FB4D9CB (ucrtbased.dll) в MatrixProject.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xDDDDDDCD.
Метод main
Matrix matrix1(3, 3);
matrix1.RFill(10, 20);
Matrix matrix2(3, 3);
matrix2.RFill(10, 20);
matrix1.Add(matrix2);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
cout << matrix1.arr[i][j] << "\t";
cout << endl;
}
Подскажите пожалуйста как исправить ошибку, и объясните пожалуйста почему она вообще возникает.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Данная функция должна записывать в строку newText строку checkText без пробеловНо при компиляции вылазит
У меня в файловой системе все данные хранятся в ОЗУЯ создал папку, в которую скопировал файл