Durante una revisión de código que he encontrado un código que define una estructura simple de la siguiente manera:C Datos ++ alineación miembros y matriz Embalaje
class foo {
unsigned char a;
unsigned char b;
unsigned char c;
}
Por otra parte, un conjunto de estos objetos se define:
foo listOfFoos[SOME_NUM];
Más tarde, las estructuras se prima-copian en un búfer:
memcpy(pBuff,listOfFoos,3*SOME_NUM);
Este código se basa en la assumpti ons that: a.) El tamaño de foo es 3, y no se aplica relleno, y b.) Una matriz de estos objetos se empaqueta sin relleno entre ellos.
Lo he probado con GNU en dos plataformas (RedHat 64b, Solaris 9), y funcionó en ambos.
¿Son válidas las suposiciones anteriores? De lo contrario, ¿en qué condiciones (por ejemplo, cambio en OS/compilador) podrían fallar?
Y alguien inventó std: vector ... –
@Matthieu: Gracias por recordarnos. Estoy seguro de que el OP había pasado por alto eso. – nus