J'ai du code écrit en C++ et quand je le compile sur mon ordinateur portable, les résultats montrent cependant que j'ai essayé de compiler et d'exécuter le code sur le RPI et j'ai l'erreur:Raspberry Pi C++ Segmentation fault
Segmentation fault
Comment le programme (actuellement) fonctionne:
- Reads dans un (.wav) dans un vecteur de double ("rawData")
- Divise le rawData en blocs (blockked)
La faute de segmentation se produit lorsque j'essaie de scinder les données en blocs. Les tailles:
RAWDATA - 57884 blockked - 112800
Maintenant, je sais que le RPI ne dispose que de 256 Mo et cela pourrait peut-être le problème, ou, je ne suis pas manipuler les données correctement. J'ai inclus un code aussi bien, pour démontrer comment les choses sont en cours d'exécution:
(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;
}
(fonction: quelque chose)
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;
Toute suggestion serait grandement apprécié :)! J'espère que c'est assez description.
'theData [i * N + j]' semble suspect. Aussi 'subBlock.resize (600 * 187);' semble être une erreur. Vous ne créez pas de tableau 2-d ici, mais 1-d. – Lol4t0
Vous utilisez également push_back dans la boucle, ce qui signifie que vous avez un tas de 'vecteur vide', puis ajouter à cela –
Collin
Merci pour vos deux réponses. @Collin Je vois le vecteur vide que vous avez mentionné. Je pourrais reconsidérer comment je réécrirais le code. Question rapide si .. Pourquoi ça marche sur mon ordinateur portable, mais pas sur le RPI? –
Phorce