C 言語で
ある長い文字列からとある文字列を検索して、その一部のコピー(のポインタ)を返すような関数があった場合、コピー先の文字列バッファを、
- 呼び出し元で確保して関数に渡すか?
- 呼び出し先で確保してそのポインタを返すか?
というのでいつも悩む。結局はその場の気分で組んでたりするから大変よろしくない。そもそもその関数を使う人間が自分しかいないから何とかなってるのも問題だ。
他人に使ってもらうような関数の場合はやはり「1」にすべきなんだろうな。基本的に「自分で確保してないメモリ」を、その関数を呼び出した人間は解放しないと思って間違いないし。そもそも、そういった関数から帰ってきたポインタ値って「確保されたものなのかどっかのアドレスなのか」なんて、使ってる人間には判断できないしな。