Objective-C [ObjC part:3];at TECH
Objective-C [ObjC part:3]; - 暇つぶし2ch192:デフォルトの名無しさん
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