C言語なら俺に聞け(入門篇) Part 22
■ このスレッドは過去ログ倉庫に格納されています
0596デフォルトの名無しさん
2007/12/14(金) 11:51:40>>594
>char str[10] だと、関数抜けると無効だからダメ。
やはりそうですか・・・
そのように宣言してから、
return str; で終了すると、コンパイル時に「問題のあるポインタ変換」といった警告メッセージが出ます。
コンパイルは成功するのですが、main関数側で呼び出すと、不安定になります。(表示されたりされなかったり、文字化けしたり、複数回実行するとエラー出て停止したりと。)
回避策として、return &str[0]; とやると警告メッセは出なくなりますが、不安定なのはいっしょです。
>>595
>勝手に確保なぞされない
ありがとうございます!私が間違って覚えていたようです。
今回使っているstrの宣言を「char* str=(char *)malloc(100);」にして、
さっそく試してみたら、問題なく動作しました。
しかし、今回のようにreturnで返すために格納する変数の場合、
free(str);でメモリ開放することができないのでは?
(return文で使うため、その後に処理を書けない。)
動いてはいるものの、メモリ開放せずに関数を終了してしまうのは問題あるような気がします。
何か方法はありますか?
■ このスレッドは過去ログ倉庫に格納されています