Прежде всего, я думаю, что вы должны измерить.Есть три варианта, о которых я могу подумать:
- с невыровненной памятью
- с
memcpy
в буферы - с настраиваемой памятью
Нераспределенная память будет работать нормально, она будет работать медленнее, чем выровненная.Насколько это медленнее, и имеет ли это значение для вас?Мера, чтобы узнать.
Копирование в буфер компенсирует более медленный не выровненный доступ для дополнительных операций копирования.Измерение покажет вам, стоит ли оно того.
Если использование невыровненной памяти слишком медленное для вас и вы не хотите копировать данные (возможно, из-за снижения производительности), то вы можете сделать это быстрее,тратить пространство памяти и увеличивать сложность вашей программы.Не используйте отображенную память вслепую: округлите свой «базовый» указатель вверх до подходящего значения (например, 8 байт) и выполняйте только чтение / запись с 8-байтовыми приращениями этого «базового» значения.Это обеспечит выравнивание всех ваших обращений.
Но прежде чем приступить ко всем этим неприятностям, сделайте все возможное.