类型Vec<[f3; 5]>
的变量是否存储为一个连续数组(Vec::len() * 5 * sizeof(f32)
字节),还是存储为Vec
指针?
答案 0 :(得分:10)
Vec<T>
的内容,无论T
,单个堆分配是self.capacity() * std::mem::size_of::<T>()
个字节。 (Vec
分配 - 这是Vec<T>
而不是Box<[T]>
的重点 - 所以这是计算中容量而不是长度。)实际Vec<T>
本身在64位计算机上使用三个单词(24 bytes)。
[f32; 5]
只是一块内存,包含五个32位浮点数,没有间接;这达到了20个字节(因此std::mem::size_of::<[f32; 5]>() == 20
)。