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

【Rust中级教程】1.6. 内存 Pt.4:静态(static)内存与‘static生命周期标注

1.6 内存 Pt.4:静态(static)内存与'static生命周期标注

1.6.1. 静态(static)内存

static内存实际上是一个统称,它指的是程序编译后的文件中几个密切相关的区域。当程序执行的时候,这些区域会自动加载到内存里。

static内存里的值会在程序执行期间一直存活。

程序的static内存是包含程序的二进制代码的(通常映射为只读的)。随着程序的执行,它会在文本段的二进制代码中挨个指令进行遍历,而当函数被调用时就进行跳跃。

static内存会持有使用static声明的变量的内存,也包括某些常量值,例如字符串。

1.6.2.‘static生命周期标注

‘static是一个特殊的生命周期,它的名字来源于static内存区。它将引用标记为只要static内存还存在(也就是程序关闭之前),那么引用就合法

static变量的内存在程序开始运行时就分配了。指向static内存中变量的引用,按定义来说,就是'static的,因为在程序关闭之前它不会被释放;但是有'static生命周期标注的引用可以不指向static内存。

既然'static生命周期标注的引用可以不指向static内存,为什么还要把这种生命周期命名为'static呢?有'static标注但不存储在static内存里这不是误导人吗?
-'static这个名称仍然适用的原因在于:一旦你创建了一个'static的生命周期的引用,就程序的其余部分而言,它所指向的内存都可能在static内存中,因为程序想要使用它多久都没问题

话句话说:'static这个名字可能会让人误以为所有带有'static生命周期的引用都指向静态内存区(即程序运行期间一直存在的全局变量或常量)。但实际上,'static只是表示这个引用在整个程序生命周期内都是有效的,至于它指向的内存是否真的存储在静态区,并不一定。换句话说,'static生命周期的引用意味着“这个引用可以一直存在,程序可以随时使用它”,但并不强制要求它的内容必须是静态分配的。

在写Rust代码的时候,遇到更多的会是'staic生命周期标注而不是static内存。'static经常出现在类型参数的trait bounds上。

例如T: 'static就代表类型T可以存活我们想要的任何时长(知道程序关闭),同时这也要求T拥有所有权的并且是自给自足的。这代表着这个类型要么它不借用其它(非static)值,要么它借用的东西是static的。这样就能保证类型能活到程序结束。

1.6.3.conststatic的区别

const关键字会把紧随它的东西声明为常量,例如:

const X: i32 = 123;
  • X被声明为了常量

常量可在编译的时候完全计算出来。在计算期间,任何引用常量的代码会被替换为常量的计算结果值。

例如:

const X: i32 = 123; println!("{}", X);

这句话中的打印操作就会在编译时被改为:

println!("{}", 123);

所以常量没有内存或关联其它存储(因为它不是一个地方)。你可以把常量理解为某个特殊值的方便的名称。

http://www.jsqmd.com/news/1256504/

相关文章:

  • CST电磁仿真:应用场景与核心用途全解析
  • 3分钟上手Cool Request:让Java开发者告别Postman的IDEA插件神器
  • 西安灞桥本地黄金回收实测测评|2026 城东居民出金避坑全攻略,30 年连锁老店全域上门无损验金 - 华金汇黄金回收
  • 7.24小记
  • 数据结构:跳表
  • 终极NVIDIA显卡色彩校准指南:用novideo_srgb解决广色域显示器过饱和问题
  • 提示词语气风格失控?90%的AI应用失败源于这3个隐形陷阱
  • 2026最好用的AI电商生图工具推荐:PixPix一站式解决电商设计难题
  • 2026年实力之选:苏州杭焕自动化设备有限公司——继电器与工业电气元器件一站式供应品牌机构 - 企业推荐官【官方】
  • Oracle Create user
  • LabVIEW部署Web服务
  • 工业大模型实时学习迭代机制:从“物理状态推演”到“端到端智能自动化”的深度技术解析
  • 【系统架构设计师】预测试卷十:综合知识(75道选择题)
  • 大麦网抢票脚本深度解析:从架构设计到性能优化的自动化解决方案
  • 2026 大连管道疏通口碑 TOP5 深度测评|正规疏通公司哪家好?资质_价格_上门速度全对比 - 园子一号
  • Mamba与YOLOv8结合的目标检测优化实践
  • 2026 玉州区黄金变现避坑指南!30 年本土连锁门店全覆盖,无损验金上门零收费,变现足额不亏 - 华金汇黄金回收
  • 上海居民闲置黄金变现避坑指南:区分品牌专柜与连锁回收价差根源 - 日常比对手册
  • “这一次,把力气用在刀刃上”
  • 2026 上海管道疏通口碑 TOP5 深度测评|正规疏通公司哪家好?资质_价格_上门速度全对比 - 园子一号
  • ComfyUI-Easy-Use终极指南:从零开始掌握AI绘画工作流设计
  • 3步配置GitHub Actions定时任务:让股票智能分析系统每天自动为你工作
  • AMD Ryzen处理器深度调试指南:5个核心技巧掌握硬件级性能调优
  • Python语言基础:9_字符串
  • Gemini决策仪表盘实战:用daily_stock_analysis提升你的股票投资决策效率
  • AI驱动的API版本自动化管理实践
  • 北美的留美求职身份规划服务哪家靠谱,STEM延期策略+绿卡路径规划缺一不可 - Matthewmx
  • 【毕设分享】springboot高校实习管理系统37884
  • AI短视频矩阵从0到100万粉丝:9步标准化SOP,含4类算法加权权重公式(2024最新平台内参)
  • 2026 东莞管道疏通口碑 TOP5 深度测评|正规疏通公司哪家好?资质_价格_上门速度全对比 - 园子一号