そもそも無闇に可変長構造体を使うのはどうなんだろう。
ポインタをメンバに作って malloc するんではなく、
可変長構造体にする理由っていうと、
その構造体をそのままファイルに読み書きしたいとか、
そういう特殊な事情がある場合だけっしょ?
本当にその手の事情はあるの?