Still don't get it. It would make sense if the structure was allocated as a contiguous memory block, like typedef struct { FLAC__uint32 length; FLAC__byte entry[length + \0 + padding]; } FLAC__StreamMetadata_VorbisComment_Entry; But as far as I can see, this is not the case. The entry member is a pointer to an UTF8 string.