Когда функция включает перераспределение, я обнаружил, что некоторые компиляторы могут сохранить адрес перед вызовом функции. Он возвращает возвращаемое значение, хранящееся в неверном адресе.
В приведенном выше описании приведен пример объяснения поведения.
#include <stdio.h>
#include <vector> 
using namespace std;
vector<int> A; 
int func() { 
    A.push_back(3);
    A.push_back(4);
    return 5; 
} 
int main() { 
    A.reserve(2);
    A.push_back(0);
    A.push_back(1);
    A[1] = func();
    printf("%d\n", A[1]);
    return 0;
}
Существует некоторый общий компилятор C++ и результат теста следующим образом.
-  GCC (сборник компилятора GNU): ошибка выполнения или выход 1
-  Clang: выход 5
-  V C++: выход 5
Это неопределенное поведение?
