Во-первых, я не понимаю, какой смысл иметь myBaseStruct
базу. Вы не предоставили никаких объяснений.
Во-вторых, то, что вы заявили в исходном сообщении, не будет работать с макетом данных, который вы описали. Для того, что вы описали в OP, вам нужно, чтобы последний член структуры был массивом, а не указателем
struct myDerivedStruct : public myBaseStruct {
int a, b, c, d;
unsigned char ident[1];
};
Размер массива не имеет значения, но он должен быть больше 0. Массивы размера 0 явно недопустимы в C ++.
В-третьих, если вы по какой-то причине хотите использовать конкретно new
, вам придется выделить буфер из char
объектов необходимого размера, а затем преобразовать результирующий указатель в тип указателя
char *raw_buffer = new char[29];
myDerivedStruct* pNewStruct = reinterpret_cast<myDerivedStruct*>(raw_buffer);
После этого вы можете сделать memcpy
, предполагая, что размер правильный.