Während ein Code-Review Ich habe über einige Codes kommen, die eine einfache Struktur wie folgt definiert:C++ Daten Mitglied Alignment und Array-Verpackung
class foo {
unsigned char a;
unsigned char b;
unsigned char c;
}
An anderer Stelle ein Array dieser Objekte definiert:
foo listOfFoos[SOME_NUM];
Später werden die Strukturen in einen Puffer-raw kopiert:
memcpy(pBuff,listOfFoos,3*SOME_NUM);
Dieser Code stützt sich auf die assumpti ons, die: a.) Die Größe von foo ist 3, und keine Auffüllung wird angewendet, und b.) Ein Array dieser Objekte wird ohne Polsterung zwischen ihnen gepackt.
Ich habe es mit GNU auf zwei Plattformen (RedHat 64b, Solaris 9) versucht, und es funktionierte auf beiden.
Sind die obigen Annahmen gültig? Wenn nicht, unter welchen Bedingungen (z. B. Änderung in OS/Compiler) können sie fehlschlagen?
Und jemand erfunden Std: Vektor ... –
@Matthieu: Danke für die Erinnerung an uns. Ich bin sicher, dass das OP das übersehen hatte. – nus