2016-04-08 2 views
1

Я пишу простую программу на C++ для копирования данных из буфера в выделенную ячейку памяти. Всякий раз, когда буфер обновляется, я запускаю следующий цикл:Копия памяти через указатели иногда пропускает данные

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

Проблема заключается в том, иногда этот код работает отлично, а иногда он пропускает куски данных. Я не знаю, что здесь происходит. Любая помощь будет оценена.

+0

Я не могу использовать memcpy, потому что я запускаю код на FPGA, а memcpy имеет низкую производительность на FPGA ... –

+1

Проблемы с выравниванием? –

+0

Нарушение псевдонимов, тип punning и неопределенное поведение? –

ответ

0

Сразу после публикации вопроса я выяснил, что проблема не в копировании памяти, а в размере переменных буфера ... Размер буфера не был кратным количеству данных, которые нужно скопировать. Это привело к пропуску некоторых кусков.

Смежные вопросы