linuxのソースで見かけたコードなんだが、

struct hoge {
 ・・・
 void *foo[0],
}

で、malloc(kmalloc)するときに sizeof(struct hoge) + foosize分をallocateして
サイズを自由に変動させるような実装がある。(メンバfooにfoosize分の領域が割り当たる)
こういうのはANSIで認められてる?
それともGCC拡張?