在c ++中尝试随机访问一个空向量时,存在分段错误。
vector<int> g;
cout<<g[3]; //Segmentation fault
但是,如果我们执行一次push_back()操作,那么我们可以进行随机访问,不会出错:
vector<int> g;
g.push_back(1);
cout<<g[0]; //output = 1
cout<<g[3]; //output = 0
这是什么原因?
答案 0 :(得分:4)
尝试获取该向量的界线之外的std::vector
元素的行为为 undefined 。 不要这样做,也不要依赖任何行为。
也许您的push_back
导致std::vector
占用了过多的内存,以防止频繁的重新分配和内存碎片整理?