Выделение структуры с гибким членом массива
Это код C99:
typedef struct expr_t
{
int n_children;
foo data; // Maybe whatever type with unknown alignment
struct expr_t *children[];
} expr_t;
Теперь, как мне выделить память?
expr_t *e = malloc (sizeof (expr_t) + n * sizeof (expr_t *));
или же?
expr_t *e = malloc (offsetof (expr_t, children) + n * sizeof (expr_t *));
Являетсяsizeof
даже гарантированно работать с типом с гибким членом массива (GCC принимает это)?