据我所知,这不是由无限递归引起的。
该程序可以在较小的数组中正常运行(它是一个音频编辑器)。现在我增加了功能以允许更大的阵列(最多 5 分钟的音频,26460000 条 16 位数据 ~50mb)。
由于增加了数组的大小,我在一个特定函数上收到堆栈溢出错误,它应该通过将数组向后写入新数组来反转输入文件的播放,然后覆盖原始数组。我猜每个数组可能高达 50MB,这可能是问题所在:
//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];
}
我对 C++ 和一般编程相当陌生,并且不确定我在调试期间遇到的错误真正告诉我什么。
任何帮助将不胜感激,我确信有一个足够简单的解决方案(我已经阅读了涉及“堆”的内容,但我不确定“堆”到底是什么)。