<分区>
考虑这个定义
int a[3][3] = {0};
这里我分配了 9 个连续的内存空间,总大小为 3*3* sizeof(int)
为数组存储的字节。现在我有这个任务
a[0][12] = 3;
看完this帖子,我知道我正在访问 a[12]
地址从基地址。
但现在我的问题是如何a[0][12]
数组下标能够访问超出分配给 a
范围的值??
<分区>
考虑这个定义
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/