2015-07-13 44 views

回答

8

無論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)。

+0

謝謝。但'Vec >'會被存儲爲指針的'Vec'對嗎? – user72961

+3

'Vec >'會有一系列緊密排列的3字結構。其中一個詞就是一個指針。另外兩個是容量和長度。 – Shepmaster

+0

對齊如何? 'Vec ','Vec '(等於容量),'Vec <(u8, u8)>','Vec <[u8; 3]>''堆有多大? – ArtemGr