簡體   English   中英

數組和單獨的初始化之間的區別?

[英]Difference between an array and separate initialization?

所以說我有一個像這樣的“結構”:

struct Vertex
{
    float posX, posY, posZ;
}

我在這里聲明了3個float(大約4字節)值。 因此,所有這些“結構”總共約為12個字節。

但是,如果我這樣寫:

struct Vertex
{
    float pos[3];
}

我還能獲得與上述相同的效果嗎? 12個字節? 有什么區別?

理論上,在第一種情況下,允許編譯器在各個字段之間添加填充,而在第二種情況下,不允許編譯器(數組必須是元素的連續序列)。

因此, 從理論上講 ,第一個struct可能會占用更多空間,實際上,它們可能具有相同的大小/內存布局。

顯然,在第一種情況下,您可以使用三個成員的名稱訪問此類數據,而在第二種情況下,將對pos成員使用數組語法。

我可以想到一個差異:如果打包的大小大於變量的大小,則編譯器將填充posX,posY,posZ以使它們很好地對齊。 當您執行二進制讀/寫時,這對您而言至多重要。

通常,使用某些填充會產生嚴重的性能原因,因為使用未對齊的數據饋送處理器可能會造成嚴重后果。

暫無
暫無

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

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