最近简单学了下rust, 发现它对内存的管理挺有意思的, 其中用的比较多是Box<T>, Rc<T> 和 RefCell<T>. 这里简单记录下自己的一些理解. 1.Box<T> Box::new() 用于在堆上分配数据,可以类比成Java和cpp中的new, 但不一样的是Java的GC会自动处理分配在堆上的数据, cpp需要手动free, 而rust里的Box 是在离开作用域时自动释放这个内存。 struct Data { value: i32, } fn main…
最近简单学了下rust, 发现它对内存的管理挺有意思的, 其中用的比较多是Box<T>, Rc<T> 和 RefCell<T>. 这里简单记录下自己的一些理解. 1.Box<T> Box::new() 用于在堆上分配数据,可以类比成Java和cpp中的new, 但不一样的是Java的GC会自动处理分配在堆上的数据, cpp需要手动free, 而rust里的Box 是在离开作用域时自动释放这个内存。 struct Data { value: i32, } fn main…