c++ - 动态分配数组的有趣行为

标签 c++ arrays dynamic

所以我正在使用一个动态分配的数组,我已经将它设置为包含 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/

相关文章:

javascript - 将数组输出括在大括号中并添加相关数据标签

php - 找到匹配时获取数组的其他部分

java - 如何正确合并两个已排序的数组?

c - C 中的哈希表 init_hash

c++ - 这是存储 float 的二维动态数组的正确初始化吗?

c++ - 使用 C/C++ 通过管道向/从 Powershell 设置 UTF-8 输入和获取 UTF-8 输出

c++ - std::set::insert 崩溃的原因

c++ - 使用复制构造函数后 SDL 纹理不渲染

javascript - AngularJS 嵌套 ng-repeats 和嵌套绑定(bind)

css - 动态更改 react 组件内的映射列表样式属性