При отладке всё окей. При вводе n = 1 тоже всё окей, но при n>1 повреждается куча

Цикл заполняет и тут же редактирует массив. По ходу дела подсчитывает изменения (Counter0 и Counter3) и выводит их. Если ввести n = 1 то всё работает как надо, но если оказывется, что n >= 2, то выходит ошибка: "Необработанное исключение по адресу 0x00007FFFAEA0F199 (ntdll.dll) в Laba.exe: 0xC0000374: Куча была повреждена (параметры: 0x00007FFFAEA777F0)." подскажите, пожалуйста, что в коде не так

int n = 0, minute, i = 0, x = 0;                         
    std::cout << " Enter number of hours of combat: ";
    std::cin >> n;
    minute = n * 60;
    int* battle = new int[minute];
    long Counter3 = 0, Counter0 = 0,    Counter1 = 0;

    for (i; i < minute + 4; i++)
    {
        battle[i] = 1;
        if (i % 2 == 1)
        {
            x = 1 + rand() % 100;
            if (x > 10) battle[i - 2] = 0;
            Counter0 = Counter0 + 1;
        }
        if (i >= 3 and i < minute)
        {
            if (battle[i - 4] == 1) {
                battle[i - 4] = 3;
                Counter3 = Counter3 + 1;
            }
        }
    }
    std::cout << "Result of Battle: \n";
    std::cout << "Target destoyed - " << Counter0 << "\n";
    std::cout << "Target missed - " << Counter3 << "\n";
    std::cout << "Target under fire - 2" << "\n";

Ответы (1 шт):

Автор решения: vlad9i2

Вы создаёте массив длиной minute, а потом в цикле пытаетесь присвоить значения по индексам minute, minute +1 ,minute + 2, minute + 3, веротяно из-за этого и исключения.

→ Ссылка