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();
}
Run Code Online (Sandbox Code Playgroud)
输出是:
205960
Run Code Online (Sandbox Code Playgroud)
当我在返回后通过线路时,它工作正常:
#include <iostream>
#include <vector>
using namespace std;
int f(){
vector< int * > v[2];
return 1;
//v[1].push_back(NULL);
}
int main(){
cout << f();
}
Run Code Online (Sandbox Code Playgroud)
输出是:
1
Run Code Online (Sandbox Code Playgroud)
我使用mingw32-g ++.exe编译器的code :: blocks.mingw版本是:gcc版本4.4.1(TDM-2 mingw32).
Pot*_*ter 10
你的编译器有bug.幸运的是,它也已经过时了.你应该升级--G ++最高版本是4.6.2,它也实现了很多C++ 11,这非常有用.
如果你选择坚持使用较旧的编译器,那也是接受其缺陷的决定.
编辑:如果你真的坚持与4.4(例如由于PHB),该系列是仍然保持.您可以升级到今年4月发布的GCC 4.4.6.