您现在的位置是:首页 >技术交流 >Rust in Action笔记 第六章 内存网站首页技术交流
Rust in Action笔记 第六章 内存
简介Rust in Action笔记 第六章 内存
Option<T>
类型在Rust中使用了空指针优化(null pointer optimization)来保证该类型在编译后的二进制文件中占用0个字节。None
变量是通过一个空指针null pointer
来表示;- 内存地址、指针、引用的区别,内存地址是指在内存中的一个字节,由汇编语言提供的一个抽象;指针,有时候也称为裸指针(raw pointer),是指向某种数据类型的内存地址,指针是由高级语言提供的抽象;引用,是一种指针,在动态类型中,引用包含了一个指针以及一些额外的保证,引用是由Rust提供的抽象;
- Rust的引用提供了比指针更多的好处:引用永远指向有效的数据;引用的字节排列是紧凑的,有助于CPU快速读取;引用能够提供变长数据类型的长度保证,引用的结构中除了内部指针本身外,还提供一个数据长度的变量,确保程序永远不会跑到内存范围之外;
{:p}
可以把变量安装指针的形式打印,打印其内存地址;- 代码列表6.3展示了两种从u8数组转化成字符串的形式,b变量通过
String::from_raw_parts(ptr, size, capa)
首先把[u8; 10]
转化成*const u8
然后转化成*mut u8
;c变量引入了CStr外部接口,通过CStr::from_ptr(c_ptr)
获取一个以