2016-07-29 4 views

答えて

1

一時オブジェクトをスタックに作成し、そのオブジェクトへのポインタを返します。機能が終了した後にはそれが存続する保証はありません。

2

この関数の呼び出し元は、呼び出した後に何を行いますか?

tの有効期間はいつですか?終了日はいつですか?

これらの両方がどのようにして不幸な結果につながりますか?

tは、関数のローカルなので、閉じ括弧で右に消滅します。返されたポインタはまったく使用できませんが、それは呼び出し元がおそらく実行するものであり、未定義動作を引き起こします。

1

あなたはあなたが関数から戻ったときにスコープから外れている、tにポインタを返すしている機能

1

の終わりに存在していないローカルオブジェクトにポイントを戻ってきています。関数の中に新しいポインタを作成し、それを返す必要があります。

cObject *t = new cObject(); 
return t; 
+1

参照ではなくポインタ –

関連する問題