さまざまなタイプの複数の POD 構造体で構成される状態変数を 1 つのメモリ領域に格納したいと考えています。状態変数を構成する構造体の組み合わせは実行時に決まるため、単に周囲の構造体やクラスに配置することはできません。また、メモリ割り当ての数をできるだけ少なくしたいと考えています。それを行う最良の方法は何ですか?次のコードは合法/移植可能ですか、それとも一部のプラットフォーム/一部のコンパイラでアライメントエラーを引き起こす可能性がありますか?
struct TestA {
int a;
short b;
};
struct TestB {
int c;
float d;
char e;
};
int main() {
void* mem = new uint8_t[sizeof(TestA) + sizeof(TestB)];
TestA* a1 = (TestA*) mem;
a1->a = a1->b = 42;
a1++;
TestB* b = (TestB*) a1;
b->c = 5;
b->d = 23.f;
b->e = 'e';
}