It's a C99 feature, called flexible array member which is typically used to create a variable length array.
It can only be specified as the last member of a struct without specifying the size (as in array_field [];
).
For example, you can do the following and the member arr
will have 5 bytes allocated for it:
struct flexi_example
{
int data;
char arr[];
};
struct flexi_example *obj;
obj = malloc(sizeof (struct flexi_example) + 5);
Its pros/cons discussed here:
Flexible array members in C - bad?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…