私は関数が返す値を決して関数内でmalloc()しません。なぜなら、受け取った値をfree()すべきかどうか、必ず間違うからです。他の人は知りませんが、私は間違います。賭けてもいい。
例外はクラス内部の変数で、これはconstructorでnewし、destructorでdeleteしています。
今回のケースでは、ベクトル型をC++言語のクラスにするのが一般的な解じゃないかと思います。でも、いつも思うのですが式をきれいにするためにライブラリを根こそぎ書き直すのも無粋ですよね。こういう記述をするためのC++の仕掛けが奇怪だというのも、私が決してこの解を採用しない理由です。
>酔漢さん
おっしゃるとおりだと思います。
しかしC++がNGといわれたので、仕方なくCで書いています(笑)。実はCでもBoehmGCという裏技を使えば、安全にメモリをやり取りできるんですが、標準ライブラリ以外は使っちゃダメという諸々の事情があったり…
C++は本当に奥が深い変態言語です。boost::spiritのソースを読むとその真髄が垣間見られるような気がします。