Здравствуйте, B0FEE664, Вы писали:
BFE>Как на C написать placement new для различных структур?
BFE>Допустим у меня есть предзаказанный буфер длиною N и я хочу внутри него разместить несколько разных экземпляров разных структур. Как это сделать правильно?
BFE>BFE>typedef struct
BFE>{
BFE> ...
BFE>} MyStruct;
BFE>typedef struct
BFE>{
BFE> const char* begin;
BFE> const char* end;
BFE> const char* tail;
BFE>} Buffer;
BFE>MyStruct* Create_MyStruct(Buffer* pBuffer)
BFE>{
BFE> if ( NULL == pBuffer )
BFE> return NULL;
BFE> if ( pBuffer->end < pBuffer->tail + sizeof(MyStruct) )
BFE> return NULL;
BFE> MyStruct* pNewObj = (MyStruct*)pBuffer->tail;
BFE> pBuffer->tail += sizeof(MyStruct); // _Alignof(MyStruct) ?
BFE> return pNewObj;
BFE>}
BFE>
от начала буфера размещаешь последовательно все структуры, пока хватает длины буфера,
на каждом шаге увеличиваешь указатель (void* или char*) на размер (sizeof) очередной
размещаемой структуры.