また、やってしまったorz

恥を晒すために記録。次のようなコードをもうすでに何回も書いていて、さっきも書いてしまった。

void hoge(char *s){
   ...(文字列bufに文字列が入る)...
   s = (char *)malloc(sizeof(buf));
   strcpy(s, buf);
   return;
}

ようするに関数の中で処理をしていくうちに欲しい文字列とサイズが分かって、それでメモリを確保したい場合。動くコードは当然こっち。

char *hoge(){
   ...(文字列bufに文字列が入る)...
   char *s = (char *)malloc(sizeof(buf));
   strcpy(s, buf);
   return s;
}

しかし、そもそも関数の中でmallocするのって絶対お行儀よくないよね。やらないのが普通?