代码之家  ›  专栏  ›  技术社区  ›  mikemaccana

在Rust中,为什么10个字符的字符串的size_of_val()返回24个字节?

  •  2
  • mikemaccana  · 技术社区  · 2 年前

    在Rust中:

    println!("{}", mem::size_of_val(&String::from("1234567890")));
    

    打印 24

    我理解 String 可以存储额外的数据,例如字符串的长度,但这24个字节从哪里来?

    use std::mem;
    
    fn main() {
        println!("{}", mem::size_of_val(&String::from("1234567890")));
        return ()
    }
    

    如果相关的话,我的体系结构是arm64。

    1 回复  |  直到 2 年前
        1
  •  9
  •   mikemaccana    2 年前

    A. String Rust中的大小为24字节,因为它由指向堆的指针(在64位系统上为8字节)、8字节长度和8字节容量组成。

    A. 一串 不以内联方式存储数据,因为它将值的字节存储在堆上。如果需要基础字节的长度,请使用 String::len

    The documentation regarding a String s representation

    推荐文章