Rust中&'static str的内存占用(字节数)是多少?
Rust中
&'static str的内存占用大小 你的推断完全正确:&'static str的内存大小确实是2倍usize的字节数。
为什么是2*usize?
&'static str属于Rust中的「胖指针」,它包含两个核心信息:
- 一个
usize大小的指针,指向字符串在内存中的起始地址; - 另一个
usize大小的数值,记录字符串的长度(字节数)。
所以它的总大小是两个usize相加,也就是2 * size_of::<usize>()。
结合你的示例代码验证
我们拆解你定义的Triple类型:
&'static str:占2*usize;- 每个
BinaryTree<&'static str>:因为枚举的最大变体是NonEmpty(Box<TreeNode<T>>),而Box是瘦指针(仅占usize),Rust会对空变体Empty做优化,所以整个枚举的大小等于usize; - 两个
BinaryTree<&'static str>加起来就是2*usize。
总大小:2*usize + 2*usize =4*usize,正好和代码中的断言assert_eq!(size_of::<Triple>(), 4 * word);匹配,这也反过来验证了&'static str的大小。
内容的提问来源于stack exchange,提问作者Anup
相关产品推荐
相关产品推荐

