如果我声明一个 2d c 样式的数组
int data[X][Y]
我假设编译器会将其创建为一个类似于
int data[X*Y]
但这能保证吗?
假设为简单起见,我们在 x86 架构上使用标准编译器。现在怎么样
int data[X][Y][Z]
?
编译器是否将其创建为连续的内存块并只是对偏移量进行一些摆弄?
我通常将单个向量用于具有偏移 row * NumCols + col 的 2d 数组,并有一个内联函数来为我计算它,但我对这个问题的 3d 数组感兴趣。我还应该问是否有人用单个向量做到了这一点,以及偏移逻辑是什么。