Стек C ++, окружающий массив, поврежден

Я попытался прочитать несколько разных постов о стек, окружающий переменную, поврежден но у меня проблемы с подключением ответов к моему коду. Мне интересно, почему я получаю сообщение об ошибке, в котором говорится, что стек окружает scoreArray поврежден Я пытался использовать несколько переменных для увеличения местоположения в массиве. Я знаю, что код написан не очень хорошо, но я был бы признателен, если бы кто-нибудь помог мне понять, почему я получу это сообщение.

Огромное спасибо.

double sum = 0.0;

double SumFunction(double printArray[]);

int i = 0;
int j = 0;

const int SIZE = 4;

void main()
{
double input = 0.0;
vector<double> scores;
double scoreArray[SIZE];

do
{
cout << "Please enter a decimal value: ";
cin >> input;

scores.push_back(input);
} while (scores.size() <= SIZE);

do
{
int z = 0;
scoreArray[i] = scores[z];
i++;
z++;
} while (i <= SIZE);
SumFunction(scoreArray);

cout << sum;

system("PAUSE");
}

double SumFunction(double printArray[])
{
do
{
sum += printArray[j];
j++;
} while (j <= SIZE);

return sum;
}

-2

Решение

Так как:

/*(1)*/ } while (scores.size() <= SIZE);
/*(2)*/ } while (i <= SIZE);
/*(3)*/ } while (j <= SIZE);

должно быть:

/*(1)*/ } while (scores.size() < SIZE);
/*(2)*/ } while (i < SIZE);
/*(3)*/ } while (j < SIZE);

так как ваш do...while циклы входят в другую итерацию, когда индекс уже превышает выделенное пространство scoreArray,

4

Другие решения