関数内でmallocしたら関数外ではどうやっても見えなくなると誤解しているようだ。
それでメモリリークを防ぐためにreturnする前にfreeで開放しちゃわないと、となるのだろう。