次の 2 次元の C スタイル配列を宣言すると、
int data[X][Y]
コンパイラがこれを次のような単一の配列として作成すると想定しています
int data[X*Y]
しかし、これは保証されていますか?
簡単にするために、x86 アーキテクチャで標準のコンパイラを使用しているとします。今はどうですか
int data[X][Y][Z]
?
コンパイラはこれをメモリの連続ブロックとして作成し、オフセットをいじるだけですか?
私は通常、オフセット行 * NumCols + col を持つ 2 次元配列に単一のベクトルを使用し、それを計算するインライン関数を持っていますが、この質問の 3 次元配列に興味がありました。また、誰かが単一のベクトルでこれを行ったかどうか、およびオフセット ロジックもどうなるかを尋ねる必要があります。