Lors d'un examen de code, je suis venu à travers un code qui définit une structure simple comme suit:C++ des données d'alignement membres et Array Emballage
class foo {
unsigned char a;
unsigned char b;
unsigned char c;
}
Ailleurs, un tableau de ces objets est défini:
foo listOfFoos[SOME_NUM];
Plus tard, les structures sont copiées-premières dans un tampon:
memcpy(pBuff,listOfFoos,3*SOME_NUM);
Ce code repose sur la assumpti ons que: a.) La taille de foo est 3, et aucun remplissage n'est appliqué, et b.) Un tableau de ces objets est emballé sans padding entre eux. Je l'ai essayé avec GNU sur deux plateformes (RedHat 64b, Solaris 9), et ça a marché sur les deux.
Les hypothèses ci-dessus sont-elles valides? Si non, dans quelles conditions (par exemple modification du système d'exploitation/compilateur) peuvent-ils échouer?
Et quelqu'un a inventé std: vecteur ... –
@Matthieu: Merci de nous le rappeler. Je suis sûr que le PO avait négligé cela. – nus