考虑此程序:C++矢量奇怪的行为
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<double> a;
while (a.size() <= 10)
a.push_back(2);
cout << a[15] << endl;
}
我希望当被问及访问的15个元素让它崩溃,但它没有(我的系统上输出0)。是什么赋予了?这是gcc中的一些新功能吗?
它可能会崩溃,它可能不会。这是未定义行为的美妙之处。 – Mysticial 2012-03-02 15:25:11
停止说..矢量可以增长他们的能力!如果你进行测试,你会看到他的矢量有16个容量,这意味着[15]是有效的! – 2012-03-02 15:45:19
@riskio'a [15]'只有在'a.size()> 15'时才有效。否则,根据标准它是未定义的行为。 (事实上,它可能会崩溃,在调试版本。) – 2012-03-02 16:13:54