掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CStringを関数で戻す場合 (ID:69066)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
isshiさん、ありがとうございます。 ただ、非常にシビアな部分が知りたいなって思ってるのですが この使い方で、大丈夫でしょうか。 つまり 1.return strSubでスタックにCStringのサイズ分の 戻り値がセットされる。 CStringのサイズ分なので文字列領域はスタック上には無いと思う。 2.fooSub()が終了して strSub が開放され strSub が使っていたヒープ上の文字列の領域開放される。 3.foo()上で1.の戻り値が str にコピーされる。 の順番で処理されるのではと思ったのです。 そうすると、2.で開放されたヒープ上の領域が3.で使用され ちゃうんじゃないかと。 大丈夫でしょうか? > strSubのコピーがfooSub()の戻り値となり、それがstrに代入されるので大丈夫です。 とのことですが、strSubのコピー処理(コンストラクタ)がどの時点で処理されているのでしょうか? 関数の呼び出し処理と、戻りがの処理が理解できてなくて申し訳ありませんが宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.