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

【第五课】Rust所有权系统(一)

目录

前言

所有权机制的核心

再谈变量绑定

主人变更-所有权转移

总结


前言

这节课我们来介绍下rust中最重要的一个点:所有权系统。这是网上经常说rust无gc的秘密所在。在开始之前,我们来想想JVM系语言,在做垃圾回收的过程,1.怎么找到垃圾,或者说怎么判断该内存上放的是垃圾。2.什么时候清理垃圾。3.怎么清除垃圾。JVM上不同的垃圾回收器,不同的垃圾回收算法都是围绕着这三个问题展开。我们假设一个场景:中学班级毕业,所有毕业的同学需要写完毕业手册后才能离开教室,离开教室后可以清理该同学的东西了。怎么做呢?当同学离开教室的时候,这个同学的东西就可以被清理了。什么叫做离开教室呢?我们都知道代码是有作用域的,说的简单就是那对{},当某个变量离开作用域后,这个变量如果是某块内存的所有者,那么这块内存就可以被释放了,是不是很有趣的思路,其实在c/c++中,内存的释放是程序员自己写的,rust中的内存释放是靠所有权系统保证的,在编译阶段rust编译器会根据所有权系统的规则对代码进行检查,保证内存都能正确的申请和释放,如果不满足规则,编译就不允许通过,这也是很多人说rust不能一次编译,但是一旦编译通过,就是安全可靠的程序。这节课我们来看看rust中所有权系统吧,提前预告涉及的概念多且陌生,耐心看完。

听起来rust中的内存回收是不是挺简单的,只要同学离开教室就可以清理该同学的东西了,假设某本字典是A同学和B同学一起买的,当A同学离开的时候,把字典清理了,这时候B同学想查字典就会造成空指针,这就是悬垂引用,当B同学离开教室时,想要再扔一次字典


http://www.kler.cn/a/398487.html

相关文章:

  • 搭建es环境
  • http响应码https的区别
  • 大数据如何助力干部选拔的公正性
  • 《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配
  • GitLab 如何降级?
  • 嵌入式课程day13-C语言指针
  • React教程第二节之虚拟DOM与Diffing算法理解
  • 【网络】什么是路由器 (Router )网关设备(Gateway)?
  • 【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
  • 【java】链表:遍历一遍找到mid node
  • Spring Boot框架在电商领域的应用
  • 蓝队基础1 -- 企业信息架构与安全基础
  • 【SQL】mysql常用命令
  • 游戏引擎学习第16天
  • ArcGIS的汉字(亚洲文本)垂直标注
  • 使用Web Accessibility技术提升网站的可达性和用户体验
  • TableGPT2-7B:用于表格数据分析的大规模解码器模型
  • 如何从docker-hub下载镜像
  • 【priority_queue的使用及模拟实现】—— 我与C++的不解之缘(十六)
  • 题目讲解17 判断链表中是否有环
  • BigQuery中jobUser和dataViewer的角色有什么不同
  • C++ 内联函数
  • 006.精读《Apache Paimon Docs - Concepts》
  • ArkTs简单入门案例:简单的图片切换应用界面
  • AWTK-WIDGET-WEB-VIEW 发布
  • C++11实现线程库