c++ - 允许访问超出范围的数组下标

标签 c++ multidimensional-array

<分区>

考虑这个定义

int a[3][3] = {0};  

这里我分配了 9 个连续的内存空间,总大小为 3*3* sizeof(int)
为数组存储的字节。现在我有这个任务

a[0][12] = 3;  

看完this帖子,我知道我正在访问 a[12]地址从基地址。
但现在我的问题是如何a[0][12]数组下标能够访问超出分配给 a 范围的值??

最佳答案

这是未定义的行为,因为您正在从某个内存块访问内存。

所以它很可能会返回你内存中这个位置的内容,但它是未定义的。

或者,如果您将某些内容分配给内存位置,就会破坏您自己的内存,如果它能正常工作,可能会导致各种问题。

关于c++ - 允许访问超出范围的数组下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304114/

相关文章:

c++ - 关于 VS 2010 中用于 C++ 的代码覆盖工具

ruby - 如何在 Ruby 中将一个数组添加到另一个数组而不以多维结果结束?

java - 二维数组无法正确输入

c++ - 当你有一个二维数组(在 C++ 中)时,调用析构函数的正确方法是什么?

C++ 错误 1 ​​错误 C2664 传递数组指针

c++ - 如何重用QFile?

c++ - 不同的 constexpr 行为 vs2015u2 vs gcc

c++ - 如何获取 C++ 类成员 vector 的大小?

c - 分配给给定头数组时出现不兼容指针类型警告初始化

java - 什么是稀疏 Java 二维数组的内存意识替代品?