ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1020532 Топик полностью
3m (24.07.2020 08:41, просмотров: 722) ответил fk0 на Aioeeeaaoiioaaie ieeooaaiieeo iaaiie!
в man memcpy написано что она принимает аргументы типа void* 

#include <string.h>

void *memcpy(void *dest, const void *src, size_t n);

Ни в описании ни в примечаниях не указано на копирование в соответствии с типом указателя. Предупреждают только о недопустимости копирования перекрывающихся областей.

Когда у меня были вопросы по быстродействию копирования я проходил memcpy отладчиком. По крайней мере в newlib-nano memcpy сначала проверяет адреса и размер блока и потом использует побайтовое или пословное копирование в зависимости от выравнивания. Из-за этих проверок в memcpy маленькие блоки по 3-8 байт оказалось быстрее копировать вручную по байтам. Никаких проблем с выравниванием в memcpy до сих пор не встречал хотя использую ее именно для копирования элементов упакованных структур.

Впрочем объявление структуры у ТС лютейший говнокод. Структуры ВСЕГДА надо объявлять с учетом выравнивания хоть упакованные хоть обычные.