Предположим, что у меня есть небольшой WAV-файл, который я открыл и выгрузил в виде массива char
для обработки.
Сейчас я пытаюсь memcpy
идентификатор блока fmt
в4-байтовый буфер.
char fmt[4];
memcpy(fmt_chunk_id, raw_file + 12, sizeof(char) * 4);
Насколько я понимаю, memcpy
это скопирует 4 байта, начиная со смещения 12, в fmt
. Однако, когда я иду к отладке программы, я получаю очень странный вывод:
Кажется, что правильно скопирован раздел fmt
, но теперьу меня почему-то куча мусора после него. Интересно, что этот мусор приходит перед форматом со смещенными байтами 0 (RIFF
) и 8 (WAVE
). Это файл с прямым порядком байтов (RIFF
).
Не могу понять, почему я получаю данные из начала буфера в end из этого, учитывая, что я скопировал только 4 байта данных (которые должны точно соответствовать первым 4 символам f
m
t
и пробелу).
Что здесь происходит? Выходные данные, кажется, указывают мне, что я где-то чересчур читаю память, но если бы это было так, я бы ожидал мусор, а не данные предыдущего смещения.
РЕДАКТИРОВАТЬ:
Еслиимеет значение, тип данных raw_file
равен const char* const
.