2016-04-08 6 views
1

Ich schreibe ein einfaches C++ - Programm, um Daten aus einem Puffer in einen dedizierten Speicherort zu kopieren. Jedes Mal, wenn der Puffer aktualisiert wird, laufe ich die folgende Schleife:Speicherkopie durch Zeiger vermisst Daten manchmal

tempPtr= (u64 *) buffer; 
for (j=0; j<buffer_length; j++){ 
    destinationPtr[i+j]=buffer[j]; 
} 
i=i+j; 

Das Problem ist, manchmal dieser Code funktioniert gut, und manchmal fehlt es Datenblöcke. Ich weiß nicht, was hier vor sich geht. Jede Hilfe wird geschätzt.

+0

Ich kann memcpy nicht verwenden, weil ich den Code auf FPGA laufen lasse und memcpy schlechte Leistung auf FPGA hat ... –

+1

Ausrichtungsprobleme? –

+0

Aliasing-Verletzung, geben Sie punning und undefined Verhalten? –

Antwort

0

Gleich nach dem Stellen der Frage, fand ich heraus, dass das Problem nicht mit dem Kopieren von Speicher, aber mit variablen Puffergrößen war ... Die Puffergröße war nicht das Vielfache der zu kopierenden Daten. Das führte dazu, dass einige Brocken übersprungen wurden.

Verwandte Themen