rust所有按键 新版rust怎么保存家?
浏览量:2532
时间:2021-04-09 21:37:03
作者:admin
新版rust怎么保存家?
对于C,C将内存使用分为两种情况:值对象和指针对象。如果值语义对象超出范围,将自动调用析构函数来销毁它,并在传递或分配它时进行复制。指针语义由人肉管理,或者使用智能指针进行引用计数。在传输赋值中复制值对象是浪费的,所以C后来有了一个move构造函数。移动值后,关联的数据将移动到新值。生锈是干什么的?在C语言的基础上进一步优化了Rust,Rust对象具有一个所有者和多个引用。Rust只允许值有一个所有者。传递和分配值将导致所有权移动。它看起来像C_PTR的唯一性,但实际上更像C的移动语义。换句话说,C copy是隐式的,move是显式的,rust move是隐式的。当然,rust在这里对编译器进行静态分析,没有运行时开销。在许多地方,我们不想改变价值观。我们只是借用一下。Rust引入了引用的概念来表示指针语义。一个常见的内存问题是指针指向一个无效的内存地址,但是rust没有这个问题。rust编译器强制您证明值的生存期大于其引用的生存期。有些编译器不理解的东西需要添加生命周期标记来告诉编译器。获取引用是一个处理值的过程,这是非常严重的。rust的核心是在这里进行限制,以保证内存的安全性。rust的局限性在于,尽管它具有复杂的所有权和生存机制,但在复杂的情况下,它必须回到引用计数。如果我们想要零开销的抽象和内存安全性,代价就是代码可读性差。所以世界上没有免费的午餐。你不能两者兼得。我们希望信任能够增强生命周期的自动推理,减少人工标注。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。