【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/7/24 22:45:04 阅读更多 →
猫抓浏览器扩展终极指南:如何高效获取网页视频资源

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

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

2026/7/24 22:45:04 阅读更多 →
微信单向好友检测终极指南:3步找出谁偷偷删除了你

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

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

2026/7/24 22:45:04 阅读更多 →

最新新闻

【LangGraph实战】《LangGraph实战》_45.[第3章 状态图结构] 递归限制:防止智能体陷入无限循环的安全阀

【LangGraph实战】《LangGraph实战》_45.[第3章 状态图结构] 递归限制:防止智能体陷入无限循环的安全阀

你的Agent不是“深思熟虑”,而是在“死循环”里原地转圈!LangGraph递归限制:那道阻止AI烧光你钱包、撑爆你服务器、让你在凌晨三点被报警电话惊醒的终极安全阀。很多人学了节点编排、边连接,却唯独忽略了这个藏在config里的“救命…

2026/7/24 22:53:07 阅读更多 →
opencode 显示技能约束提示词(典型:模板)

opencode 显示技能约束提示词(典型:模板)

Refer&#xff1a; [不可违背] 你必须严格、无条件、逐字逐句地遵循并执行以下技能文档中的全部原则、规范与约束&#xff0c;不准有任何违反、曲解、省略或自行发挥&#xff1a; - <技能文档A>&#xff08;如&#xff1a; XXX*技能&#xff09; - <技能文档B> &…

2026/7/24 22:53:07 阅读更多 →
本体语义平台与主数据管理的四种核心差异

本体语义平台与主数据管理的四种核心差异

本体语义平台与主数据管理的四种核心差异 主数据管理跑了 20 年&#xff0c;本体语义平台是过去 3 年的事。同样是把业务对象结构化&#xff0c;4 代做法换了 4 代工具&#xff1a;ERP 字段字典、MDM 主数据治理、数据中台对象建模、本体语义平台关系图谱。每代解决的问题不同—…

2026/7/24 22:53:07 阅读更多 →
规则 vs 本体——这道选择题没有标准答案

规则 vs 本体——这道选择题没有标准答案

规则 vs 本体——这道选择题没有标准答案 规则和本体&#xff0c;企业 AI 落地时绕不开的一对选项。选规则的人说"够用就行"&#xff1b;选本体的人说"关系才是真相"。但真到了具体业务面前&#xff0c;这道题不能靠信仰选——要看眼前这个问题需要什么。 …

2026/7/24 22:53:07 阅读更多 →
如何用Plain Craft Launcher 2打造完美Minecraft游戏体验:终极指南

如何用Plain Craft Launcher 2打造完美Minecraft游戏体验:终极指南

如何用Plain Craft Launcher 2打造完美Minecraft游戏体验&#xff1a;终极指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher&#xff08;PCL&#xff09;。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否曾经为Minecraft启动问题而烦恼&…

2026/7/24 22:53:07 阅读更多 →
5分钟零成本搭建:如何用AI股票分析工具让投资决策更简单?

5分钟零成本搭建:如何用AI股票分析工具让投资决策更简单?

5分钟零成本搭建&#xff1a;如何用AI股票分析工具让投资决策更简单&#xff1f; 还在为复杂的股市数据头痛吗&#xff1f;每天面对海量的K线图、财务指标和新闻资讯&#xff0c;普通投资者往往感到无从下手。daily_stock_analysis正是为解决这一痛点而生——这是一款完全免费…

2026/7/24 22:52:07 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化&#xff0c;核心特色&#xff1a;三维 X/Y/Z 三轴空间&#xff0c;所有散点分布在 0~10 立方体空间内&#xff1b;散点使用径向渐变实现立体 3D 圆球质感&#xff1b;支持鼠标 / 触屏拖拽画布&#xff0c;…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls&#xff1a;进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值&#xff0c;并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好&#xff0c;我是一名编程初学者&#xff0c;同时这也是我编程学习之路上的第一篇博客。在这里&#xff0c;我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手&#xff0c;目前在学习c语言&#xff0c;我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻