>>125
とりあえず、func2() は、恐くて使えない。
main() {
 char buf[2];
 func2(buf);
}
void func2(char *_char){
 strcpy(_char,"unko");
}
ってしちゃったらどーしてくれるんだ!
せめてfunc2(char *buf,int buflen);にしてホスイ。

んで、func1()は、「必ず」メモリを確保されてしまうけど、
func2()は呼び出す側の都合で新たにmalloc()してから
呼び出すか、既に確保してあるメモリを使いまわすか
選べるので、漏れならfunc2()にしとく。

でも、あんまり気にしなくてもいいと思う。

とここまで書いたら、>>131が既に答えていた・・・