後者だと、その関数がfooだとして
bar(foo(), foo())なんてやったときに、何がおきるかわからんね。
なので、まっとうなひとならやらない。
mallocする方法も特殊なときいがいはやらない
(freeするタイミングとレベルがずれるので)
で、ださいようだが実は一番合理的なのは、
引数でもらってそこに書いたのを、便宜のために先頭あどれすを返す方法
(むかしのsprintfみたいな)