簡體   English   中英

3d數組在內存中是連續的,那么2d呢?

[英]Is a 3d array contiguous in memory, what about a 2d?

如果我聲明一個2d c風格的數組

int data[X][Y]

我假設編譯器會將其創建為類似於的單個數組

int data[X*Y]但這有保證嗎?

讓我們假設為簡單起見,我們在x86架構上使用標准編譯器。 那怎么樣?

int data[X][Y][Z]

編譯器是否將其創建為連續的內存塊,並且只是對偏移進行一些調整?

我通常使用單個向量作為帶有偏移行* NumCols + col的2d數組,並且有一個內聯函數來為我計算它,但我對這個問題的3d數組感興趣。 我還應該問一下是否有人用一個向量做了這個,也有偏移邏輯。

是的,C中任何順序的多維數組都是連續的。 他們只是“數組陣列”,可以這么說。 還有更多關於comp.lang.c常見問題解答,第6節,數組和指針

生成的數組將在分配給您的進程的虛擬內存區域中連續。 陣列在物理內存中可能不是連續的,但這對您來說無關緊要。

數組中的元素保證是連續的,因此兩種情況下的布局都是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM