Есть программа, в ней ошибка, помогите её исправить и понять почему выскакивает. В интернете нашел, что эта ошибка возникает, когда выходишь за грани массива - но вроде бы и не выхожу. Я подозреваю, что напутал что-то с ссылками и указателями (ничего в них не понимаю толком) - и это как бы следствие. Программа работает, результат выдает, после окончания уже ошибку эту выдает.
Run-Time Check Failure #2 - Stack around the variable 'match' was corrupted.
Run-Time Check Failure #2 - Stack around the variable 'game' was corrupted. (Одна из двух по очереди выскакивает)
Код программы:
#include "pch.h"
#include <iostream>
using namespace std;
void dynamic_memory_allocation(int m, int* g)
{
g = new int[m];
}
void get_data(int m, int* g)
{
for (int i = 0; i < m; i++)
{
cout << "Введите исход матча №" << (i + 1) << " (кол-во очков: 0, 1, 3)." << endl;
cin >> g[i];
if (g[i] != 0 && g[i] != 1 && g[i] != 3) {
cout << "Введено некоректное значение, повторите ввод." << endl;
i--;
}
}
}
void sum_point(int m, int* g, int& s)
{
for (int i = 0; i < m; i++)
s += g[i];
}
void win_fall(int m, int* g, int& cw, int& cf)
{
for (int i = 0; i < m; i++)
!g[i] ? cf++ : cw++;
}
int main()
{
setlocale(0, "");
int match = 0, game, sum = 0, count_win = 0, count_fall = 0;
cout << "Введите количество матчей" << endl;
cin >> match;
if (match < 0) {
cout << "Некоректные входные данные";
return 0;
}
dynamic_memory_allocation(match, &game);
get_data(match, &game);
sum_point(match, &game, sum);
cout << "Общее количество очков = " << sum << endl;
win_fall(match, &game, count_win, count_fall);
cout << "Команда выиграла или сыграла в ничью " << count_win << " раз(а)" << endl;
cout << "Команда проиграла " << count_fall << " раз(а)" << endl;
return 0;
}