当前位置: 首页 > news >正文

县级以下不允许建设网站免费法律咨询24小时在线

县级以下不允许建设网站,免费法律咨询24小时在线,应用开发工程师干什么,免费制作公司网站系列文章目录 【rust】| 00——开发环境搭建 【rust】| 01——编译并运行第一个rust程序 【rust】| 02——语法基础 | 变量(不可变?)和常量 【rust】| 03——语法基础 | 数据类型 【rust】| 04——语法基础 | 函数 【rust】| 05——语法基础 | 流程控制 【rust】| 06——语言特…

系列文章目录
【rust】| 00——开发环境搭建
【rust】| 01——编译并运行第一个rust程序
【rust】| 02——语法基础 | 变量(不可变?)和常量
【rust】| 03——语法基础 | 数据类型
【rust】| 04——语法基础 | 函数
【rust】| 05——语法基础 | 流程控制
【rust】| 06——语言特性 | 所有权

文章目录

  • 1. 所有权的概念
  • 2. 所有权的规则
  • 3. 变量的作用域
  • 4. 所有权的移动

1. 所有权的概念

 所有权是Rust语言中一个关键的特性。它是一种内存管理规则(机制)。它通过这个规则(即所有权系统)结合编译器对代码进行检查 从而确保内存安全。
 在其他语言如C/C++ 等 都有自己的内存管理方式。C/C++需要我们显式(手动)处理所用的内存(申请、释放) 如果处理不当会造成很严重的内存安全问题。而Rust中这一特性很好的可以帮我们确保内存安全性。

2. 所有权的规则

1、每个值都对应一个变量 owner (可以理解为每个值会有一个管理 叫owner)
2、一个值只能有一个 owner
3、有作用域,当owner超出作用域 值会被销毁 (可以理解为 这个管理权限有限)

3. 变量的作用域

Rust中变量的作用域和其他语言类型。比如函数体内的 变量(局部变量) 它的作用域在 函数大括号之间 生命周期也是这么短。
在这里插入图片描述
可以看到 超过范围销毁了。 对应所有权规则的最后一条。owner 就是这个值藏在暗处的变量名。 它超过变量作用域会消失。Rust内部在超出后 会掉清理函数 drop
清理变量占用的内存。

4. 所有权的移动

我们通过代码例子去理解

1、变量赋值操作

在这里插入图片描述
分析:
  1、整型变量赋值 变量a 复制到了 变量b
  2、字符串赋值 变量s1 复制到了 变量s2
  我们可以看到 两种不同的类型 操作几乎是一样的。 整型它只是一个数字 再怎么复制占用的大小就那么多 无关紧要。可是当是一个很大的字符串 复制给另一个变量 那所占用的大小(很大*2) 这样的操作 太占用大小 咋的一个字符串准备要我命啊。是不是和其他语言复制操作很类似。
  但是在 Rust中 复制的操作 还是有细微差别的 我们深入了解下rust下 具体复制的具体过程

细看 字符串变量的定义及复制到其他变量的过程

在这里插入图片描述
可以看到 字符串变量的内容 hello 存储在堆上 而 定义的变量 S1 只保存了 指向堆上内容的指针、长度和容量这三个 这些内容存储在栈上。并没有将 字符串内容也保存。
下面我们看 S1内容复制给S2 是怎样的
在这里插入图片描述
可以看到 S1 复制到 S2 也只是复制了 指针、长度、容量三件套。不重复复制堆上内容。这样的情况下S1 S2是不是 占用栈大小很少。

如果S1 S2把数据一起保存呢
在这里插入图片描述
可以看到 全保存过来 每个变量 都这样完全复制 那栈吃不消。当内容很大时 是不是 一个赋值操作直接给 栈空间 用完 干废掉啦。

通过上面图我们可以看到 rust中 变量保存了指向内容的指针等。 S1 和S2 中的指针都指向了 数据内容。我们知道所有权规则之一 变量超出作用域 会没了。那么当S1和S2 超出作用域 会尝试释放 因为它两指向一个地址那么 两次释放是不是会出大问题呢。也称为 双重释放错误。
当然 rust中也会想到这种错误 所以它会避免啦。
在这里插入图片描述

在这里插入图片描述
在Rust中 执行完 S2=S1这样的操作 S1已经变得无效啦 所以不会再存在上面双重释放的隐患了。
其实 Rust中S2 = S1 的操作类似浅拷贝 只拷贝了指针长度容量。但是rust 中超出范围 让其消失的规则 即S1 无效啦的操作 我们把这样称为 移动

http://www.yayakq.cn/news/737073/

相关文章:

  • 一个刚做好的网站怎么做seo网络整合营销理论案例
  • 做网站最少多少钱黑龙江 哈尔滨
  • 企业网站开发平台wordpress手机网站插件
  • 二环建设部网站黄骅港防疫办电话
  • 网站收录了被人为删了怎么办娱乐类网站
  • 网站建设需要租用什么科目百度小程序有什么用
  • 网站中文域名做网站用什
  • 2021年手机能看的网站公司在线注册
  • 西安建站之家网络科技有限公司中国域名是
  • 信阳建设企业网站wordpress chmod() 函数
  • 查询网站ftp地址中国建设人才网证书查询系统官网
  • 网站发多少篇文章开始做外链山东助企网站建设
  • 礼品公司网站建设优惠券网站怎么做代理
  • 织梦网站字体大小网站推广免费
  • 开发软件和做网站的区别中企动力做什么的
  • 傻瓜式网站建设软件白糖贸易怎么做网站
  • 成都专做婚介网站的公司wordpress增加赞赏
  • 做个网站需要什么企业网站建设应该注意什么事项问题
  • 数据网站建设免费logo设计图案
  • 科技+杭州+网站建设广州无线电集团有限公司
  • 免费做公司网站张槎九江网站建设
  • php网站开发打不开学网站建设要多久
  • 网站建设的最终目标网站session
  • 小程序企业网站开发php wordpress apache
  • 龙华建网站做手机网站和pc如何做
  • wordpress站点设置使用期限it渠道网
  • 金科做的网站logo标志设计网
  • 遵义做网站哪家好网站建设捌金手指下拉三
  • 做违法网站会怎么样百度店铺
  • 百度地图网页版在线使用如何优化网站提高排名