Objective-C [ObjC part:3]; at TECH
[2ch|▼Menu]
192:デフォルトの名無しさん
08/04/11 21:36:49
>>191
いや、まだよくわかってないんじゃないかな ...

戻り値のスタック自体は安全なので、
[NSString stringFromUTF8string: foo().c_str()] は ok 。
191 さんがはまっていた
const char* const bar() { return foo().c_str(); }
の場合は、作られた foo() は、そもそも戻り値スタックに乗らないで、
戻り値スタックにのるのは foo() から c_str() で返ってきた
char* ポインタだけでしょ。
で、その乗っている char * ポインタの値自体は安全なんだけど、
char * ポインタが差している文字列の実体、おそらく
どこかで malloc されているもの、は bar() の関数から抜ける際に
foo() で出来たテンポラリが破壊されるのでついでに free されるわけです。


もういちど C++ のテンポラリオブジェクトの寿命について
勉強したほうがいいと思います。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4982日前に更新/227 KB
担当:undef