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

R门 - rust第一课陈天 -内存知识学习笔记

内存

内存
栈溢出
堆溢出
使用堆引用共享数据
栈帧示意图
字符串内存使用图

本文主要介绍了 Rust 中的内存管理:

  • 包括栈和堆的概念、栈溢出和堆溢出的问题以及如何使用堆引用共享数据。

  • 文章通过图片和代码示例详细讲解了这些概念和问题

  • 对于 Rust 初学者来说是一篇很好的入门文章。


1. Rust中的内存管理包括哪些概念和问题?

2. 什么是栈和堆?它们有什么区别?

3. 如何使用堆引用共享数据?

4. 如何考虑栈溢出和堆溢出的问题?


1. Rust中的内存管理包括哪些概念和问题?

本文介绍了 Rust 中的内存管理,包括栈和堆的概念、栈溢出和堆溢出的问题以及如何使用堆引用共享数据。

  

2. 什么是栈和堆?它们有什么区别?

栈和堆都是内存中的一部分,栈是一种后进先出的数据结构,用于存储函数调用时的局部变量和函数调用的返回地址等信息,而堆是一种动态分配内存的机制,用于存储程序运行时动态分配的数据。栈和堆的主要区别在于它们的分配方式和管理方式不同。

  

3. 如何使用堆引用共享数据?

可以使用指针或引用来引用堆中的数据,从而实现数据的共享。在 Rust 中,可以使用 Box<T> 类型来创建堆上的数据,并使用 & 操作符来创建指向堆上数据的引用。

  

4. 如何考虑栈溢出和堆溢出的问题?

栈溢出和堆溢出都是内存管理中的常见问题。栈溢出通常是由于递归调用或者函数调用层数过多导致的,可以通过增加栈的大小或者优化代码来解决。堆溢出通常是由于动态分配内存时没有正确释放导致的,可以通过手动释放内存或者使用 Rust 的内存管理机制来解决。

  • 内存

    • 字符串内存使用图

      • 栈帧示意图

      • 考虑栈溢出

      • 使用堆引用共享数据

      • 考虑堆溢出

字符串内存使用图

![[Pasted image 20241114114341.png]]

栈帧示意图

![[Pasted image 20241114114405.png]]

考虑栈溢出

使用堆引用共享数据

在这里插入图片描述

考虑堆溢出

在这里插入图片描述

知识来源

极客时间专栏 - rust第一课 陈天


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

相关文章:

  • cls(c基础)
  • 0x00基础算法 -- 0x05 排序
  • Python期末复习 | 列表、元组、字典、集合与字符串 | 代码演示
  • C++——视频问题总结
  • 力扣 LeetCode 541. 反转字符串II(Day4:字符串)
  • 通过Python 调整Excel行高、列宽
  • Apache Doris:监控与运维及系统调优
  • 【RabbitMQ】07-业务幂等处理
  • Tomcat NIO 配置实操指南
  • JVM——类加载器、类加载器的分类
  • 【Ubuntu侧边菜单点击没反应】【Ubuntu 20.04】【浏览器、文件夹点击没反应】
  • LabVIEW开发相机与显微镜自动对焦功能
  • 消息中间件分类
  • 《Django 5 By Example》阅读笔记:p17-p53
  • 去中心化存储:Web3数据安全新标准
  • Wireshark中的length栏位
  • YOLO理解
  • 一个C++线程安全的栈数据结构的例子
  • 电子商务系统设计与Spring Boot框架
  • 对话 OpenCV 之父 Gary Bradski:灾难性遗忘和持续学习是尚未解决的两大挑战 | Open AGI Forum
  • cls(c基础)
  • Excel单元格中自适应填充多图
  • SpringCloud核心组件(三)
  • 6547网:青少年软件编程Python等级考试(六级)真题试卷
  • 一键抠图:免费安全的在线图片去除背景工具
  • uniapp 实现 ble蓝牙同时连接多台蓝牙设备,支持app、苹果(ios)和安卓手机,以及ios连接蓝牙后的一些坑