如果我声明一个2d c风格的数组
int data[X][Y]
我假设编译器会将其创建为类似于的单个数组
int data[X*Y]
但这有保证吗?
让我们假设为简单起见,我们在x86架构上使用标准编译器.那怎么样?
int data[X][Y][Z]
?
编译器是否将其创建为连续的内存块,并且只是对偏移进行一些调整?
我通常使用单个向量作为带有偏移行*NumCols + col的2d数组,并且有一个内联函数来为我计算它,但我对这个问题的3d数组感兴趣.我还应该问一下是否有人用一个向量做了这个,也有偏移逻辑.
生成的数组将在分配给您的进程的虚拟内存区域中连续.阵列在物理内存中可能不是连续的,但这对您来说无关紧要.