Похожие чаты

Hi there what is align all about ? I know it

for optimization purpose,
it adds padding to speed up copying.

But why is something like :

*reinterpret_cast<CSomething*>(buff) = instanceOfCSomething;

has something to do with alignment ?

5 ответов

23 просмотра

I'm not sure about the example you've shared, but some platforms have restrictions about alignment, on these platforms your app can crash if you try to read some unaligned data. Other platforms will read the data very slowly if it's unaligned

John- Автор вопроса
Pavel
I'm not sure about the example you've shared, but ...

Me neither. Someone expert is complaining about alignment stuff. Do you have suggestion how to make it aligned ?

John
Me neither. Someone expert is complaining about al...

The simplest way is to copy the data bytewise into a pointer which is aligned.

Does memcpy(buff, &istanceOfSomething, sizeof(CSomething); work ?

I'm not 100% sure but it seems that when you do reinterpret_cast<CSomething*> you need to get a pointer that is aligned according to the object requirments. Your operator=() has undefined behaviour if it's not the case. So buff needs to be aligned. Or use memcpy. Source:https://stackoverflow.com/questions/32589328/unaligned-access-through-reinterpret-cast

Похожие вопросы

Обсуждают сегодня

Карта сайта