Это:
memcpy(frame, char_buf, sizeof(char) * sizeof(frame));
не имеет смысла, как указано в комментариях. Умножение размеров здесь не логично.
Поскольку frame
является указателем, на мой взгляд, лучше всего использовать sizeof
для того, на что указывает указатель, поскольку это то, что происходитcopyied (into):
memcpy(frame, char_buf, sizeof *frame);
Это также слегка «блокирует» количество копируемых байтов до размера буфера назначения, без повторения имени типа, что может быть хорошим.
Также помните, что sizeof
не является функцией, скобки нужны только в том случае, если аргумент является именем типа, поскольку они являются частью аргумента (который в данном случае выглядит как приведение).