2г



Программирование
+4Какая-то непонятная ошибка C++, объясните пожалуйста
Задача про выделение динамической памяти С++, двумерным массивам, не буду углубляться в подробности задачи т.к. ни к чему это. Я написал код, и выдало вот такую ошибку:

Самое интересное, что это происходит тогда, когда я ставлю матрицу размером 10х12, когда же я ставлю размеры матрицы 3х4, то такой ошибки нет. Мне кажется, что она происходит потому что не хватает может быть ресурсов моего компа или просто вижуал студио треш, не знаю, потому что в code blocks все работает как часы и с матрицей 10х12 и 3х4 и вообще с любой.
То что мне пишут в этой ошибки (ошибка это вообще?) я не понимаю, хоть и написана она на русском языке. Помогите пожалуйста.
Код:
1234567891011121314151617181920212223242526272829303132333435363738394041424344
#include <iostream>
#include <ctime>
#define N 10
#define M 12
int main()
{
using namespace std;
setlocale(LC_ALL, "Rus");
srand(time(NULL));
//int mas[N][M] = { {5,6,4,5},{-2,5,3,7},{8,7,-2,6 } }; // 2 примера с матрицами, где есть седловые точки
//int mas[N][M] = { {2,3,5,2} ,{2,4,6,2} ,{-2,7,2,0} };
int** mas = new int*[N];
for (int i = 0; i < M; i++)
*(mas + i) = new int[M];
for (int i = 0; i < N; i++) { // Генерация чисел
for (int j = 0; j < M; j++) {
int element = rand() % 30 - 5;
mas[i][j] = element;
}
}
// Вывод на экран элементов матрицы
cout << "Ваша матрица: " << endl;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cout << mas[i][j] << "\t"; // ТУТ ПРОИСХОДИТ МОМЕНТИК
}
cout << endl;
}
// Освобождение памяти
delete[]arr_max;
delete[]arr_min;
delete[]arr_max_s;
delete[]arr_min_s;
for (int i = 0; i < M; i++)
delete[] * (mas + i);
}
По дате
По рейтингу
Перепутаны границы массива. В одном месте i до N, в другом до М
12345678910111213141516171819202122232425262728293031
#include <iomanip>
#include <iostream>
#include <ctime>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
using namespace std;
size_t input(const char* msg) {
cout << msg;
size_t value;
cin >> value;
cin.ignore(0x1000, '\n');
return value;
}
int main() {
srand(unsigned(time(nullptr)));
auto n = input("N: ");
auto m = input("M: ");
puts("");
auto matrix = new int* [n];
for (size_t i = 0; i < n; ++i) {
matrix[i] = new int[m];
for (size_t j = 0; j < m; ++j) {
matrix[i][j] = RAND(-5, 25);
cout << setw(4) << matrix[i][j];
}
puts("");
}
for (size_t i = 0; i < n; ++i) delete[] matrix[i];
delete[] matrix;
system("pause > nul");
}
1234
int** mas = new int*[N]; //размер массива mas = N
for (int i = 0; i < M; i++) //а вы считаете как будто он M
*(mas + i) = new int[M];