我有一些用C++編寫的代碼,當我在筆記本電腦上編譯它時,結果顯示,但是,我試圖編譯代碼並將其運行到RPI上,並且出現錯誤:Raspberry Pi C++分段錯誤
Segmentation fault
程序(目前)工作原理:
- 讀取的(.WAV)文件到雙打的載體( 「RAWDATA」)
- 拆分RAWDATA成塊(blockked)
當我嘗試將數據分割成塊時,會發生分段錯誤。大小:
RAWDATA - 57884 blockked - 112800
現在我所知道的唯一的RPI擁有256MB,這可能可能是問題,或者,我是不正確地處理數據。我已經包括了一些代碼爲好,以協助表明事物是如何運行:
(main.cpp中):
int main()
{
int N = 600;
int M = 200;
float sumthresh = 0.035;
float zerocorssthres = 0.060;
Wav sampleWave;
if(!sampleWave.readAudio("repositry/example.wav", DOUBLE))
{
cout << "Cannot open the file BOOM";
}
// Return the data
vector<double> rawData = sampleWave.returnRaw();
// THIS segments (typedef vector<double> iniMatrix;)
vector<iniMatrix> blockked = sampleWave.something(rawData, N, M);
cout << rawData.size();
return EXIT_SUCCESS;
}
(功能:東西)
int n = theData.size();
int maxblockstart = n - N;
int lastblockstart = maxblockstart - (maxblockstart % M);
int numblocks = (lastblockstart)/M + 1;
vector< vector<double> > subBlock;
vector<double> temp;
this->width = N;
this->height = numblocks;
subBlock.resize(600*187);
for(int i=0; (i < 600); i++)
{
subBlock.push_back(vector<double>());
for(int j=0; (j < 187); j++)
{
subBlock[i].push_back(theData[i*N+j]);
}
}
return subBlock;
任何建議將不勝讚賞:)!希望這是足夠的描述。
'海圖[I * N + J]'看起來很可疑。另外'subBlock.resize(600 * 187);'似乎是一個錯誤。您不是在這裏創建2維數組,而是1-d。 – Lol4t0
你也在循環中使用push_back,這意味着你有一堆空的'vector',然後加上 –
Collin
謝謝你的回覆。 @Collin我看到你提到的空矢量。我可能會重新考慮如何重寫代碼。儘管問題很快..爲什麼它會在我的筆記本電腦上工作,但不是在RPI上? –
Phorce