Гибкие массивы должны иметь длину 0 в C99. Использование размера 1 - это C90, и теперь оно устарело.
По сути, такие гибкие массивы создаются путем вызова malloc
с sizeof(Bucket) + array_length
, где array_length
- требуемый размер вашего массива. Затем разыменование указателя arKey
(который должен быть последним членом вашей структуры) приведет к доступу к этой дополнительной памяти, эффективно реализуя объекты переменного размера.
См. Эту страницу для получения дополнительной информации:
http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html