私の知る限り、これは無限再帰が原因ではありません。
プログラムは、より小さな配列で正しく機能しました (これはオーディオ エディターです)。今では、より大きな配列 (最大 5 分間のオーディオ、26460000 個の 16 ビット データ ~50 MB) を可能にする機能を強化しました。
配列のサイズを大きくしてから、ある特定の関数でスタック オーバーフロー エラーが発生しました。この関数では、配列を新しい配列に逆方向に書き込み、元の配列を上書きして、入力ファイルの再生を逆にする必要があります。各配列は最大 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++ とプログラミング全般にかなり慣れていないため、デバッグ中に発生するエラーが実際に何を示しているのかわかりません。
簡単な解決策があると確信しています(「ヒープ」に関するものを読んだことがありますが、「ヒープ」が実際に何であるかについては確信が持てません)。