1
を関数へのポインタは、私は関数fooを(持っていると仮定)ストア戻り値
A foo() {
A a(...);
return A;
}
今()私は
の戻り値へのポインタを格納void bar() {
A* pA = &foo();
}
bar()の最後に戻り値が範囲外になるか、pAで削除を呼び出す必要がありますか?
を関数へのポインタは、私は関数fooを(持っていると仮定)ストア戻り値
A foo() {
A a(...);
return A;
}
今()私は
の戻り値へのポインタを格納void bar() {
A* pA = &foo();
}
bar()の最後に戻り値が範囲外になるか、pAで削除を呼び出す必要がありますか?
これよりもはるかに悪いです! bar
でpA
をデリファレンスの
動作は未定義になります。 foo()
は、呼び出しサイトのステートメントに制限された匿名の一時的なテンポラリを返すためです。
delete
new
を使用した割り当ての結果得られたポインタには、delete
が必要です。
ありがとう、これは非常に明確です。 – Dooggy
***またはpAで削除を呼び出す必要があります*** ***あなたは削除しません。 ***戻り値はbar()の最後にスコープから外れますか?***。あなたはこれをすることはできません。 – drescherjm