为什么这个c ++破解的程序在windows和linux上表现得如此不同?

hrs*_*hrs -5 c++ c++11

mingw gcc 7.3/windows 10; gcc 6.3 debian 9

以下程序,如果X设置为1,它将在debian上正常运行.如果X设置为2,它将立即在debian上中止.但在Windows上可以是900,它将不会中止与不同的输出......

int main() {

    vector<int> asdf (5);
    unsigned int X = 2;

    for (unsigned int i = 0; i < asdf.size() + X; i++) {
        asdf[i] = i;
        cout << asdf[i] << "; ";
    }
    cout << '\n';

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Bil*_*nch 6

在X> 0的所有情况下,您的代码都表现出未定义的行为.正如您所看到的,有时未定义的行为会导致程序崩溃,有时会导致程序输出垃圾.

我建议避免未定义的行为.