【发布时间】:2018-09-13 19:34:25
【问题描述】:
int main () {
std::vector <int> elements;
elements.push_back (1);
elements [10000] = 102;
std:: cout << elements [10000];
return 0;
}
上面的代码是如何工作的?据我所知,vector 的增长将是 1.5 - 2 倍。那么第 10000 个元素是如何存储在这里的呢?这里的预期行为不是“分段错误”吗?但以上运行成功。
【问题讨论】:
-
下标运算符从未进行过边界检查,越界索引一直是未定义的行为。
-
行为未定义;没有预期的行为。
-
@molbdnilo 意外和未定义是不同的东西
-
对问题投反对票的人应该说明原因并提供帮助。如果用户在投反对票之前不能离开任何 cmets,我建议跳过投反对票。