據我所知,這不是由無限遞歸造成的。堆棧溢出visual C++,潛在的數組大小?
該程序用較小的陣列(它是音頻編輯器)正確地發揮作用。現在我增加了功能,以允許更大的陣列(音頻最多5分鐘,16位數據26460000個〜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++,和一般的編程,和我不能確定過程中出現了錯誤的東西調試真的告訴我。
任何幫助,將不勝感激,我敢肯定有一個很簡單的解決辦法(我讀過的東西,涉及「堆」,但我不相信什麼a'heap」確實是)。
確定'REVERSE_DATA [(max_number_samples-1)-i]'是正確的?您只將數據寫入'reverse_data'數組的末尾部分,但是從頭開始讀取它們。 – Vlad
啊,我沒有看到這個評論。你是對的,但是我用另一個循環來搜索音頻的開始,並且只從音頻的開頭將數據寫入結尾。非常感謝你的幫助! – holmes321