允许访问超出范围的数组下标
Permissible access to out-of-range array subscript
考虑这个定义
int a[3][3] = {0};
这里我有9个分配的连续内存空间,总大小为3*3*sizeof(int)
为数组存储的字节。现在我有这个任务
a[0][12] = 3;
看完这篇文章后,我明白了我正在从基本地址访问a[12]
地址
但现在我的问题是a[0][12]
数组下标如何能够访问超出分配给a
的范围的值
这是未定义的行为,因为您正在从某个内存块访问内存。
所以它很可能会返回你记忆中这个位置的内容,但它是未定义的。
或者,如果你把一些东西分配到内存位置,你就会破坏你自己的内存,如果它有效的话,这可能会导致各种问题。
相关文章:
- 并行用于C++17中数组索引范围内的循环
- 在函数范围内在堆栈上分配的数组在离开函数时是否总是被释放?
- 基于字节数组生成静态范围整数值
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 使用基于数组和范围的 For 循环替换一些基本代码行
- C++中循环和 C 样式数组的范围工作
- Excel 不愉快地显示大型 2D 范围公式数组
- 变量未在此范围内声明 数组线性搜索
- 如何使用基于范围的for循环迭代Rapidjson文档(它本身就是一个JSON数组)
- 对于多个查询,查找在 l 到 r 范围内具有相同元素的最长公共子数组
- 基于多维标准::数组的范围
- 从文件中读取选定的行范围并存储到数组中
- 从原始指针(衰减的 C 样式数组)和大小生成范围::视图
- C++ 如何在给定范围内将数组中的数字相加?
- 给定数组范围的选择排序问题
- C++ 从指定范围内的文件中读取数组
- 数组不会存储超出第一个空间的范围
- gcc8.2如何启用警告:数组下标在数组范围之上[-warray-bounds]
- 数组中的"Maximum Sum mod M"范围:求和和计数
- 检查一对值是否位于范围数组中的范围之间