6
類型Vec<[f3; 5]>
的變量是否存儲爲一個連續數組(Vec::len() * 5 * sizeof(f32)
字節)或者是否存儲爲指針的Vec
?數組向量的內存佈局是什麼?
類型Vec<[f3; 5]>
的變量是否存儲爲一個連續數組(Vec::len() * 5 * sizeof(f32)
字節)或者是否存儲爲指針的Vec
?數組向量的內存佈局是什麼?
無論T
是什麼,Vec<T>
的內容都是self.capacity() * std::mem::size_of::<T>()
字節的單個堆分配。 (Vec
過度分配 - 這是Vec<T>
而不是Box<[T]>
的整點 - 這是計算中的容量,而不是長度)。實際的Vec<T>
本身需要三個字(64位計算機上的24 bytes)。
[f32; 5]
只是一個包含五個32位浮點數的內存塊,沒有間接尋址;這來到二十個字節(因此std::mem::size_of::<[f32; 5]>() == 20
)。
謝謝。但'Vec>'會被存儲爲指針的'Vec'對嗎? –
user72961
'Vec>'會有一系列緊密排列的3字結構。其中一個詞就是一個指針。另外兩個是容量和長度。 –
Shepmaster
對齊如何? 'Vec','Vec '(等於容量),'Vec <(u8, u8)>','Vec <[u8; 3]>''堆有多大? –
ArtemGr