クラスオブジェクトのベクトルがあります。関数はランダムに 2 つの要素を選択し、それらのアドレスを返します。
これら 2 つの要素を使用して、同じクラスの 2 つの新しいオブジェクトを生成し、push_back を使用してそれらをベクターに追加します。
2 つの親要素のアドレスは次のとおりです。
ここでは問題ありません。最初の子オブジェクトが生成され、vector_pushback を使用してベクターの末尾に追加します。問題は、push_back コマンドが実行された後、親オブジェクトのアドレスが変更されたように見えることです。push_back 後のデバッガーの状態は次のとおりです。
ご覧のとおり、アドレスは明らかに同じままですが、push_back の後でガベージ値を指しているように見えます。私の理解では、push_back はベクターの最後に要素を追加します。したがって、2 つの要素のアドレスはまったく変更されないと予想されます。
どうしたの?