"Flexible array member" [0] is when you have a struct and its last member is an array with unspecified size.
An example:
#include <stdio.h>
#include <stdlib.h>
struct Foo {
int len;
int* arr; // dynamic "array"
};
struct Bar {
int len;
int arr[]; // FAM
};
int main()
{
const int n = 12;
// have to allocate myself; no guarante it will be nearby the rest of struct
struct Foo* a = malloc(sizeof a);
a->arr = malloc(n * sizeof *(a->arr));
// array is part of the memory allocated for struct
struct Bar* x = malloc((sizeof x) + n*(sizeof *(x->arr)));
return 0;
}
[0]: https://en.wikipedia.org/wiki/Flexible_array_member