struct {
 size_t size;
 char values[1];
} char_array;
しといて
char_array* array = malloc( sizeof( size_t )+count );
というのはよく見るね。
言語仕様的にはアウトの予感だけど。