Tengo el siguiente tipo de código:¿Un miembro de matriz flexible aumenta el tamaño de una estructura?
typedef struct
{
u32 count;
u16 list[];
} message_t;
...
message_t* msg = (message_t*)buffer;
msg->count = 2;
msg->list[0] = 123;
msg->list[1] = 456;
size_t total_size = sizeof(*msg) + sizeof(msg->list[0]) * msg->count;
send_msg(msg, total_size);
línea Problemático es la línea con sizeofs. No estoy seguro de que sea la forma correcta de contar el espacio necesario. ¿Contiene sizeof(*msg)
algo sobre el miembro list
?
Puedo probarlo con mi compilador, pero ¿todos los compiladores funcionan de manera similar en este caso?
depende de la alineación –
@Mitch Wheat: sí, tienes razón. Tu comentario es la respuesta correcta a la pregunta del título. +1 para ti. – SKi