Переполнение стека Visual C ++, потенциально размер массива?

Насколько я знаю, это не вызвано бесконечной рекурсией.

Программа работала правильно с меньшими массивами (это аудио редактор). Теперь я увеличил функциональность, чтобы учесть большие массивы (до 5 минут аудио, 26460000 фрагментов 16-битных данных ~ 50 МБ).

Поскольку увеличивается размер массива, я получаю ошибки переполнения стека в одной конкретной функции, где он должен обратить воспроизведение входного файла путем записи массива в новый массив в обратном направлении, а затем переписать исходный массив. Я предполагаю, что каждый массив может занимать до 50 МБ, в этом и заключается проблема:

<code>//initialise temporary new array to place samples in
short signed int reverse_data[max_number_samples];  

for (i=0; i<track_samples; i++)
{  //puts data from sound_data into reverse_data backwards.
  reverse_data[(max_number_samples-1)-i]=sound_data[i];    
}

for (i=0; i<track_samples; i++)    
{     //now overwrites sound_data with the data in reverse_data
  sound_data[i]=reverse_data[i];
}
</code>

Я довольно новичок в C ++ и программировании в целом, и не уверен, что ошибки, которые я получаю во время отладки, действительно говорят мне.

Любая помощь была бы оценена, я уверен, что есть достаточно простое решение (я читал материал, включающий «кучи», но я не уверен, что на самом деле представляет собой «куча»).

Ответы на вопрос(2)

Ваш ответ на вопрос