求问[T; N] 和 &[T] 的指针大小?

💡 原文中文,约800字,阅读约需2分钟。
📝

内容提要

本文讨论了[T; N]和[T]之间的区别,以及数组指针和切片指针的大小。作者发现数组和切片使用相同的代码获取长度,但数组指针的大小为8而不是16。作者希望得到解答。

🎯

关键要点

  • [T; N] 是一种在编译期已知且长度不变的数组类型,长度 N 是类型的一部分。

  • [T] 的长度在编译期不可知,不满足 Sized trait,因此通常使用 &[T] 来指向 [T]。

  • 胖指针(fat pointer)不仅包含数据地址,还保存长度信息。

  • 在代码示例中,数组指针大小为 8 字节,而切片指针大小为 16 字节,符合胖指针的特性。

  • array.len() 和 slice.len() 都调用相同的实现,疑问在于为什么数组指针大小为 8 而不是 16。

➡️

继续阅读