所以我正在使用一个动态分配的数组,我已经将它设置为包含 5 个元素,因此应该是 0-4。我创建了一个函数来在必要时保留它,但我想看看当我在 [5] 处为数组赋值时是否出现了预期的程序崩溃。但是,没有错误,直到 [6]。
这是我的代码:
int* dynamic_arr;
dynamic_arr = new int[5];
for(int i = 0; i <= 100; i++){
dynamic_arr[i] = i;
used++;
cout << dynamic_arr[i]<<endl;
}
这是输出:
0 //i[0]
1 //i[1]
2 //i[2]
3 //i[3]
4 //i[4]
5 //i[5] <-- should be out of range
之后它崩溃了。
为什么我可以为数组的一部分赋值,而由于缺少更好的术语而超出范围?
谢谢
OpSrcFTW
编辑:感谢大家的回答,谢谢。抱歉,我会在下次发布之前阅读更多内容以获得快速答复。
最佳答案
超出数组末尾的访问会产生未定义的行为。它不一定会产生崩溃。任何事情都有可能发生。
关于c++ - 动态分配数组的有趣行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14969609/