《Rust 编程第一课》 学习笔记 Day 10

121 阅读1分钟

大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。第十天还是继续和大家一起学习 Rust😊

之前都是学习生命周期的内容,今天学一学 Rust 的内存管理相关的知识。内存管理是所有编程语言的核心,总体来讲都是围绕着分配和释放来构建内存管理的机制。

栈内存在编译期间就已经确定好了,因为它无法安全去承载动态大小和生命周期超过了帧存活范围外的值。只有在堆内存里面才可以自由的操控。

大部分的堆内存的需求在于动态大小,小部分需求是更长的生命周期。所以 Rust 默认将堆内存的生命周期和使用它的栈内存的生命周期绑定在一起,并可以使用 leaked 机制,让堆内存在需要的时候可以超出帧存活期的生命周期。

Rust 在内存中排布数据时,会根据每个域的对齐对数据进行重排,重排是为了让 CPU 在加载不对齐的内存时,可以提高性能,避免用户定义不对齐的数据结构所造成的性能影响。如果结构体的定义考虑不够周全,就会为了对齐而浪费了了很多空间