2015-07-13 13 views

Trả lời

8

Nội dung của Vec<T> là, bất kể T, phân bổ một đống duy nhất, là self.capacity() * std::mem::size_of::<T>() byte. (Vec totalocates — đó là toàn bộ điểm Vec<T> thay vì Box<[T]> — đó là dung lượng, không phải độ dài, quan trọng trong phép tính này.) Bản thân thực tế Vec<T> có ba từ (24 bytes trên máy 64 bit).

[f32; 5] chỉ là một đoạn bộ nhớ có chứa năm số dấu phẩy động 32 bit, không có hướng dẫn; điều này đến hai mươi byte (do đó std::mem::size_of::<[f32; 5]>() == 20).

+0

Cảm ơn. Nhưng 'Vec >' sẽ được lưu dưới dạng 'Vec' của con trỏ đúng không? – user72961

+3

Một 'Vec > 'sẽ có một loạt các cấu trúc 3 từ được đóng gói chặt chẽ. Một trong những từ đó sẽ là một con trỏ. Hai loại còn lại là dung lượng và chiều dài. – Shepmaster

+0

Điều gì về căn chỉnh? Làm thế nào lớn là đống cho 'Vec ', 'Vec ' (là nó bằng với công suất), 'Vec <(u8, u8)>', 'Vec <[u8; 3]>'? – ArtemGr

Các vấn đề liên quan