sizeof(A)+sizeof(B));
a->b = (struct B*) (a + 1);
Такое выделение памяти для структуры и вложенной через указатель структуры - не нарушает strict aliasing rule? Это будет UB или нет (в сишке/в плюсах)?
Определения A и B дай...
Во второй строчке что-то странное
В размер структуры A входит размер вложенных структур, т.е. в данном случае B, поэтому sizeof() тут не нужно складывать.
Тут код неверный. a->b = (struct B*) (a + 1);
ub, если alignof(B) > algnof(A)
Обсуждают сегодня