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

use*_*961 8 arrays rust

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

Chr*_*gan 10

Vec<T>无论T单个堆分配,a 的内容都是self.capacity() * std::mem::size_of::<T>()字节数.(Vecoverallocates-这是整个点,Vec<T>而不是 - Box<[T]>这是容量,而不是长度,在这个计算中很重要.)实际Vec<T>本身需要三个字(64位机器上的24个字节).

[f32; 5]只是一块内存,包含五个32位浮点数,没有间接; 这达到了20个字节(因此std::mem::size_of::<[f32; 5]>() == 20).

  • 一个`Vec <Vec <T >>`会有一系列紧密排列的三字结构.其中一个词就是指针.另外两个是容量和长度. (4认同)