char*の文字列のポインタ配列を扱う場合の質問です。
char*型の戻り値を持つユーザー定義関数がうまく動作させられません。

char* function(引数){
char* str;
〜処理〜
return str;
}


内部でstrに入れる文字数が長いとダメとか、
printf("%s",function()); では表示されないのに
(c++になってしまいますが)cout<<function()<<'\n';では表示されたりとか、その逆だったりとか、

一見呼び出し側で問題無いように見えても、
1回呼び出すだけなら大丈夫でも、for文などで回してやるとエラーが出て停止したりとか。

char*型というのはそもそも、「char mojiretsu[100]」のように長さを指定する文字列と比べて、
必要な領域を確保される、長さに上限は無い、そういう型だと認識していましたが、間違っていますか?(ある程度以上の長さ入れるとマズイとか)

function内部のstrを、「str[20]」のように固定長の配列にするとうまく動いたりもしますが、
str[20]をstr[10]にすると文字化けしたり、はたまたstr[100]にすると表示されなかったりと、
(戻り値として返そうとしているのは半角4〜8文字程度で、10でも箱が足りないことは無いはずなのに)

いずれもコンパイルは通るので、メモリ周りでなにかマズイ処理になってるのだと思いますが・・・
コンパイラはBorland Bcc5.5フリー版です。
もう3日ぐらい悩んでます お願いします・・・