码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • rust内存分配,内存回收,内存泄露


    内存泄露

    首先我们先来讲内存泄露,rust中有两种方式可以造成内存泄露。

    • 循环引用
      如下的代码执行之后我们在控制台与系统监视器中监控进程执行过程,测试路程如下。
    1. 首先在控制台打印main function start的时候内存还未分配太多,索引进程占用内存还是很小的。
    2. 等到空太太打印start add mem以后,可以看到系统监视器中进程内存占用增加到了30多MB。
    3. 但是看到outside stack_alloc打印到控制台的时候并未在系统监视器中看到内存的释放,代表内存泄露了,并且drop函数也并未执行。
      总结:本来在函数mem_alloc执行过后就应该回收内存了,第一:栈空间的回收,第二:堆空间的回收。由于我们使用了智能指针,内存大多分配在了堆空间,但是堆空间未回收是因为出现了循环引用。当我们把其中cur_node.borrow_mut().next = Some(first_node.clone());注释掉再次执行的时候就会看到内存的释放了
    use std::cell::RefCell;
    struct 
  • 相关阅读:
    AD教程系列 | 5 - 绘制原理图
    商城免费搭建之java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c
    前端性能-首次加载优化70%
    引入echarts.js操作步骤
    使用数据分析,识别设备异常
    如何实现一个AI聊天功能
    535. TinyURL 的加密与解密 : 设计一个 URL 简化系统
    区块链中的库(solidity0.8.13)
    【八大经典排序算法】快速排序
    网络安全(黑客)-0基础小白自学
  • 原文地址:https://blog.csdn.net/jl19861101/article/details/139735886
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号