数组向量的内存布局是什么?

时间:2015-07-13 01:09:42

标签: arrays rust

类型Vec<[f3; 5]>的变量是否存储为一个连续数组(Vec::len() * 5 * sizeof(f32)字节),还是存储为Vec指针?

1 个答案:

答案 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)。