在 Rust 中,切片(Slice,例如 或 )在内存中的表示被称为 “胖指针” (Fat Pointer)。 与 C 语言中只包含内存地址的普通指针不同,Rust 的切片包含两个部分的数据。 内存结构 一个切片在底层实际上是一个结构体(虽然在语言层面是内置类型),它占用两个机器字长(Two machine words): 1. 指针 (Pointer): 指向数据序列中第一个元素的内存地址。 2. 长度 (Length): 切片中包含的元素个数(注意是元素的个数,不是字节数,除非元素类型是 )。 在 64 位系统上,一个切片占用 16 字节(8 字节指针 + 8 字节长度)。 图解表示 假设我们有一个 ,数据存储在堆上,然后我们创建了一个指向其中一部分数据的切片。 内存布局如下: ptr: 指向堆内存中 的地址(即切片的起始位置)。 len: 值为 ,表示该切片包含 3 个 元素。 代码验证 我们可以通过 来验证切片的大小是普通指针的两倍,也可以通过 代码查看其原始部分。 特殊情况:字符串切片 () 字符串切片 的内存表示与 完全相同,也是一个胖指针: 1. ptr: 指向 U...