内存管理和安全性

内存管理和安全性

程序和内存。
内存分配和安全性。
内存管理。
堆栈和堆。
安全三要素——所有权、借用及生命周期。
智能指针类型。

内存管理及其分类

手动型:C语言采用了这种内存管理机制,且完全由程序员负责,在程序代码使用完内存之后调用free函数来释放内存。
自动型:采用这种内存管理形式的语言包括一个额外的运行时线程,即GC,它作为守护线程与程序一起运行。
半自动型:Swift等语言属于这一类别。它们没有作为运行时的一部分的内置专用GC,但提供了引用计数类型,这可以细粒度地实现自动化内存管理。

内存分配简介

堆栈 : 函数中所有let绑定都存储在堆栈中,它既可以是值本身,也可以是指向堆上内存地址的指针。
堆栈上内存分配速度很快,因为分配和释放内存只需一条CPU指令:递增/递减堆栈帧指针。堆栈帧指针(esp)是一个CPU寄存器,它始终指向堆栈的最顶部。
虽然堆栈简洁、高效,但实际上程序还需要生命周期更长的变量,因此我们需要使用堆。

堆:堆用于处理更复杂的动态的内存分配需求。Rust在堆上分配内存的唯一方法是通过智能指针类型。Rust中的智能指针类型实现了Drop特征,它指定了如何释放值所使用的内存,并且在语义上定义了类似于C++中析构函数的方法。

内存管理的缺陷

最令人担忧的情况是释放在堆上分配的数据。堆内存需要谨慎使用,如果没有释放,堆中的值可能在程序的生命周期中永久存在,并且最终会导致应用程序被内核中的内存越界(O

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值