【Rust中级教程】1.3. 内存 Pt.1:各类概念的定义及变量的高级模型和低级模型
1.3 内存 Pt.1各类概念的定义及变量的高级模型和低级模型1.3.1. 值在讲内存之前我们得先讲三个概念第一个是值。值指的是类型 类型值域中的一个元素。例如true它的类型是bool类型它的值域里就两个值——一个true一个false。值指的是类型 类型值域中的一个元素true的值就是bool类型 值域中的元素true。通过值的类型表示可以转化为字节序列- 举个例子u8类型的6在内存中的表示就是0x06- 再看一个例子str的Hello World字符串它就是字符串值域里的一个值它的表示是utf-8编码注意值的含义是独立于存储它字节的位置的也就是值和存储它的位置没有直接关系它们是独立的两个概念1.3.2. 变量值会存储到一个地方或者说这个地方可以容纳值具体就是堆内存、栈内存或者其他地方。最常见的存储值的地方就是变量它是栈内存上一个被命名的槽用于存储值。1.3.3. 指针指针是一个值值里面存放的是一块内存的地址指针指向某个地方地址所对应的内存。指针可以被解引用(dereference)来访问它指向的内存里存放的值。可以把同一个指针放在不同的变量里也就是说多个变量可以间接地引用内存上的同一块区域也就是相同的底层的值。1.3.4. 深入变量变量可以被分为两种模型- 高级模型生命周期、借用...- 低级模型不安全代码、原始指针...变量的高级模型变量实际上就是给值一个名称。当值被赋给变量时这个值从那时起就由该变量命名了。举个例子:let variable 1234;如图1234这个数据此时就由variable这个变量命名了。当变量被访问时可以从变量的上次访问到这次访问画一条线从而在两次访问中建立依赖关系。如果变量被移动了就不能从它那里画线。这么说你可能不明白看个图你就懂了声明a第2行算一次访问把a赋给b第4行算另一次但是和打印出a第8行之间不能画线因为在此之前变量已经移动了第4行。在变量的高级模型中变量只会在它持有合法值的时候才存在。如果变量的值没有初始化或者已经被移动了那就无法使用画线的方法。使用这种模型整个程序会由许多依赖线组成这些线叫flow。每个flow都在追踪一个值的特定实例的生命周期。当有分支存在时flow可以分叉或合并并且每个分叉都在追踪该值的不同的生命周期。在程序中的任何给定点编译器可以检查所有的flow是否可以互相兼容并行存在。例如- 一个值不可能有两个具有可变访问的并行flow- 一个flow借用了一个值但却没有flow拥有该值变量的低级模型变量会给那些可能不存储合法值的内存地址进行命名。可以把变量想象为值的槽当你赋值时槽就装满了而它里面原来的值如果有的话就被丢弃或替换了。当访问它时编译器会检查槽是不是空的。如果是那么就说嘛变量未初始化或它的值被移动了。指向变量的指针其实是指向这个变量的幕后内存通过解引用可以获得它的值。注意在本例中我们忽略CPU寄存器并将其视为优化。实际上如果变量不需要内存地址编译器可以使用寄存器而不是内存区域来存放变量。

相关新闻

【Rust中级教程】2.3. API设计原则之不意外性(unsurprising) Pt.3:实现serde下的Serialize和Deserialize trait、不建议实现Copy trait

【Rust中级教程】2.3. API设计原则之不意外性(unsurprising) Pt.3:实现serde下的Serialize和Deserialize trait、不建议实现Copy trait

2.3. API设计原则之不意外性(unsurprising) Pt.3:实现serde下的Serialize和Deserialize trait、不建议实现Copy trait 2.3.1. 建议实现serde下的Serialize和Deserialize trait serde是Rust中用于序列化(serialization)和反序列化(…

2026/10/26 7:30:31 阅读更多 →
猫抓浏览器扩展终极指南:如何高效获取网页视频资源

猫抓浏览器扩展终极指南:如何高效获取网页视频资源

猫抓浏览器扩展终极指南:如何高效获取网页视频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&#xf…

2026/10/27 21:37:06 阅读更多 →
微信单向好友检测终极指南:3步找出谁偷偷删除了你

微信单向好友检测终极指南:3步找出谁偷偷删除了你

微信单向好友检测终极指南:3步找出谁偷偷删除了你 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你…

2026/10/24 12:51:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/30 0:01:36 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/29 8:45:01 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/29 9:52:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/30 0:01:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/29 9:51:34 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/29 8:44:28 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 17:01:10 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 9:42:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 0:01:33 阅读更多 →