asp网站生成静态,常州建设网站公司哪家好,百度站长工具有哪些,站长之家网址查询所有权
前置
在计算机语言不断演变过程中#xff0c;内存管理是一个很重要的话题。当前的三种流派#xff1a;
垃圾回收机制(GC)#xff0c;在程序运行时不断寻找不再使用的内存#xff0c;典型代表#xff1a;Java、Go手动管理内存的分配和释放, 在程序中#xff0c;…所有权
前置
在计算机语言不断演变过程中内存管理是一个很重要的话题。当前的三种流派
垃圾回收机制(GC)在程序运行时不断寻找不再使用的内存典型代表Java、Go手动管理内存的分配和释放, 在程序中通过函数调用的方式来申请和释放内存典型代表C通过所有权来管理内存编译器在编译时会根据一系列规则进行检查
什么是所有权
描述
Rust 中每一个值都被一个变量所拥有该变量被称为值的所有者一个值同时只能被一个变量所拥有或者说一个值只能拥有一个所有者当所有者(变量)离开作用域范围时这个值将被丢弃(drop) 人话 这个就是C移动构造创建出来的unique_ptr 变量只有移动没有深拷贝 想要深拷贝需要调用 clone()方法 同时和C 表现一样对于内置类型(基础类型),直接拷贝就好了。。。。
由于这玩意儿表现形式就是unique_ptr所以在函数调用上就会很恶心 现成的解决栗子就是C常用的引用和解引用
引用与解引用
表现形式和C一毛一样。。。。 不过这里有个小细节C定义函数参数的时候常常使用的 const , 在rust中是默认 const , 想要修改参数需要加上 mut关键字。
限制 同一作用域特定数据只能有一个可变引用 可变引用与不可变引用不能同时存在
防御性编程到极致了。。。 数据竞争
两个或更多的指针同时访问同一数据至少有一个指针被用来写入数据没有同步数据访问的机制
引用使用方式
同一时刻你只能拥有要么一个可变引用, 要么任意多个不可变引用引用必须总是有效的