Je le tableau 2D suivant:C++ - Comment utiliser memmove pour les éléments d'un tableau 2D?
float accumulator[MAX_CHANNELS][2*MAX_FRAME_LENGTH];
et je continue à déplacer les blocs de mémoire dans mon code pour chaque canal comme celui-ci:
for (int channel = 0; channel < nChannels; channel++) {
memmove(accumulator[channel], accumulator[channel] + stepSize, fftFrameSize * 2 * sizeof(float));
}
Cependant, cela me donne de faux résultats et je ne Je ne comprends pas pourquoi. Quel est le problème avec l'appel memmove
que j'utilise?
Sinon, j'ai essayé d'utiliser les tableaux 1D suivants (1 pour chaque canal) à la place et avons obtenu des résultats corrects:
float accumulator1[2*MAX_FRAME_LENGTH];
float accumulator2[2*MAX_FRAME_LENGTH];
memmove(accumulator1, accumulator1 + stepSize, fftFrameSize * 2 * sizeof(float));
memmove(accumulator2, accumulator2 + stepSize, fftFrameSize * 2 * sizeof(float));
Qu'est-ce mauvais résultats? Nous avons besoin d'un [MCVE] (http://stackoverflow.com/help/mcve). –
Dans la deuxième partie du code, vous utilisez 2 tableaux. Dans le premier morceau de code, nous n'avons aucune idée de ce qu'est 'MAX_CHANNELS', ou de ce qu'est' nChannels'. Donc, les deux ne sont pas équivalents à moins que vous n'ayez codé '' 2' pour 'MAXCHANNELS' et' nChannels'. Qu'est-ce que – PaulMcKenzie
'' stepSize' et fftFrameSize' provoque l'erreur? De plus, à quoi correspond MAX_FRAME_LENGTH? – Pavel