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

广州怎么做网站网站建设存在问题

广州怎么做网站,网站建设存在问题,网页怎么做成app,网站备案信息是什么意思变量与数据的交互方式 - 移动 Rust 中的多个变量可以采用一种比较独特的方式和同一个数据进行交互#xff0c;如下代码所示#xff0c;将变量x的值赋给y#xff1a; fn main() {let x 1;let y x; }我们大概可以推论出上述代码的原理#xff1a;将1这个整数绑定给x变量如下代码所示将变量x的值赋给y fn main() {let x 1;let y x; }我们大概可以推论出上述代码的原理将1这个整数绑定给x变量let y x相当于创建了一个x的副本并且将这个副本绑定给了y。现在有了两个变量x和 y都等于 1。这也正是事实上发生了的因为整数是有已知固定大小的简单值所以这两个 1被放入了栈中。 上面是已知固定大小的简单例子现在看一下复杂的例子就是String。 fn main() {let str1 String::from(hello);let str2 str1; } 复制代码 上述代码看起来和整数的例子非常相似所以我们可能会假设他们的运行方式也是类似的也就是说第二行可能会生成一个 str1的副本并绑定到 str2上。不过事实上并不完全是这样。 首先我们需要知道String底层是什么样的String在内存中由三部分组成如下如所示是将值hello绑定给str1的String在内存中的表现形式。一个指向存放字符串内容内存的指针一个长度和一个容量。这一组数据存储在栈上。右侧则是堆上存放内容的内存部分。 图1 长度表示 String的内容当前使用了多少字节的内存。容量是 String从操作系统总共获取了多少字节的内存。长度与容量的区别是很重要的不过在当前上下文中并不重要所以现在可以忽略容量。 当我们将 str1赋值给 str2String的数据被复制了这意味着我们从栈上拷贝了它的指针、长度和容量。我们并没有复制指针指向的堆上数据。换句话说内存中数据的表现如下图所示。 图2 这个表现形式看起来 并不像下图 中的那样如果 Rust 也拷贝了堆上的数据那么内存看起来就是这样的。如果 Rust 这么做了那么操作 str2 str1在堆上数据比较大的时候会对运行时性能造成非常大的影响。 图3 之前我们提到过当变量离开作用域后Rust 自动调用 drop函数并清理变量的堆内存。不过图 2 展示了两个数据指针指向了同一位置。这就有了一个问题当 str2和 str1离开作用域他们都会尝试释放相同的内存。这是一个叫做 二次释放double free的错误也是之前提到过的内存安全性 bug 之一。两次释放相同内存会导致内存污染它可能会导致潜在的安全漏洞。 为了确保内存安全这种场景下 Rust 有另一个独到的处理。与其尝试拷贝被分配的内存Rust 则认为 str1不再有效因此 Rust 不需要在 str1离开作用域后清理任何东西。看看在 str2被创建之后尝试使用 str1会发生什么: fn main() {let s1 String::from(hello);let s2 s1;println!({}, world!, s1); }运行cargo run就会报错因为Rust禁止使用无效的引用 error[E0382]: use of moved value: s1-- src/main.rs:5:28| 3 | let s2 s1;| -- value moved here 4 | 5 | println!({}, world!, s1);| ^^ value used here after move| note: move occurs because s1 has type std::string::String, which doesnot implement the Copy trait如果你在其他语言中听说过术语 浅拷贝shallow copy和 深拷贝deep copy那么拷贝指针、长度和容量而不拷贝数据可能听起来像浅拷贝。不过因为 Rust 同时使第一个变量无效了这个操作被称为 移动move而不是浅拷贝。上面的例子可以解读为 s1被 移动到了 s2中。那么具体发生了什么如下图 所示。 这就解决了二次释放的错误因为只有 s2是有效的当其离开作用域它就释放自己的内存完毕。 另外这里还隐含了一个设计选择Rust 永远也不会自动创建数据的 “深拷贝”。因此任何 自动的复制可以被认为对运行时性能影响较小。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
http://www.pierceye.com/news/805120/

相关文章:

  • 网站开发需求模板找网络公司做推广费用
  • 网站推广工具推荐广州公关公司招聘
  • 网站搭建平台源码做健身网站开题报告
  • 大芬网站建设樟树网站开发
  • 北京通州个人网站建设哈尔滨建设工程招投标办公室
  • 怎样开个人网站如何做百度免费推广
  • 深圳成品网站超市佛山网站建设机构
  • 江苏 网站建设第一次做网站做后感
  • wordpress翻译公司网站没事网站建设项目规划书
  • 东莞建设年审网站我的世界充钱网站怎么做
  • 太原网站排名系统电子商务市场营销
  • 社区网站开发进度表2018年做网站还能
  • 论企业网站建设的必要性内网网站搭建设
  • 网站建设怎么翻译如何建立自己的网站
  • 2345网址大全热门seo推广排名稳定
  • 网站建设工作有底薪吗360优化大师
  • 门户网站微信服务号建设大型网站建设优化排名
  • 贵州省冶金建设有限公司网站wordpress end_lvl
  • 网站建设的工作职责是什么网站后台显示连接已重置
  • 俱乐部手机网站模板微信公众号个人可以做网站么
  • 简述一个网站开发流程软件下载网站搭建
  • 超级营销型网站模板建湖人才网官网登录
  • 建设网站都需要什么万网二手已备案域名
  • 网站建设运营维护合同快捷建站专家
  • 中山建设网站公司软件工程开发
  • 网站备案logo韩国展厅设计网站
  • 网站建设沧州做网站导航能赚钱吗
  • 自己怎么创建免费网站wordpress使用插件
  • 做一个个人主页的网站怎么做商城小程序模板
  • 网站站内链接怎么做wordpress文章样式插件