Почему операторы после return изменяют возвращаемое значение?

C ++ возвращает недопустимое значение в следующем коде:

#include <iostream>
#include <vector>

using namespace std;

int f(){
    vector< int * > v[2];
    return 1;
    v[1].push_back(NULL);
}

int main(){
    cout << f();
}

Вывод:

205960

Когда я соединяю строку после возврата, он работает нормально:

#include <iostream>
#include <vector>

using namespace std;

int f(){
    vector< int * > v[2];
    return 1;
    //v[1].push_back(NULL);
}

int main(){
    cout << f();
}

Вывод:

1

Я использую code :: block с компилятором mingw32-g ++. Exe. Версия mingw: gcc версии 4.4.1 (TDM-2 mingw32).

6
задан thiton 28 November 2011 в 14:18
поделиться