Сообщение Re: [C] как разместить структуру внутри буфера от 27.02.2019 10:37
Изменено 27.02.2019 10:42 kov_serg
Re: [C] как разместить структуру внутри буфера
Здравствуйте, B0FEE664, Вы писали:
BFE>Допустим у меня есть предзаказанный буфер длиною N и я хочу внутри него разместить несколько разных экземпляров разных структур. Как это сделать правильно?
BFE> pBuffer->tail += sizeof(MyStruct); // _Alignof(MyStruct) ?
У вас размер структуры уже выравнен. Достаточно что бы начало вашего региона было выравнено.
А так можете вручную выравнивать если память линейная
BFE>Допустим у меня есть предзаказанный буфер длиною N и я хочу внутри него разместить несколько разных экземпляров разных структур. Как это сделать правильно?
BFE> pBuffer->tail += sizeof(MyStruct); // _Alignof(MyStruct) ?
У вас размер структуры уже выравнен. Достаточно что бы начало вашего региона было выравнено.
А так можете вручную выравнивать если память линейная
#define align(x,n) ((char*)(x)+(-(int)(char*)(x)&(n-1)))
Re: [C] как разместить структуру внутри буфера
Здравствуйте, B0FEE664, Вы писали:
BFE>Допустим у меня есть предзаказанный буфер длиною N и я хочу внутри него разместить несколько разных экземпляров разных структур. Как это сделать правильно?
BFE> pBuffer->tail += sizeof(MyStruct); // _Alignof(MyStruct) ?
У вас размер структуры должен быть выравнен (paddings). Достаточно что бы начало вашего региона было выравнено.
А так можете вручную выравнивать если память линейная
BFE>Допустим у меня есть предзаказанный буфер длиною N и я хочу внутри него разместить несколько разных экземпляров разных структур. Как это сделать правильно?
BFE> pBuffer->tail += sizeof(MyStruct); // _Alignof(MyStruct) ?
У вас размер структуры должен быть выравнен (paddings). Достаточно что бы начало вашего региона было выравнено.
А так можете вручную выравнивать если память линейная
#define align(x,n) ((char*)(x)+(-(int)(char*)(x)&(n-1)))