Переполнение стека 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 ++ и программировании в целом, и не уверен, что ошибки, которые я получаю во время отладки, действительно говорят мне.
Любая помощь была бы оценена, я уверен, что есть достаточно простое решение (я читал материал, включающий «кучи», но я не уверен, что на самом деле представляет собой «куча»).