rustp-20.智能指针介绍
指针
指针是一个包含内存地址的变量,地址指向其他数据。和C语言相同
智能指针
智能指针在现代C++中有过应用,Rust中智能指针是一类数据结构,表现和指针相同,但是
拥有额外的元数据(包括引用计数器 ),最明显的是拥有一个引用计数。
引用计数指定了指针的所有者有几个,并且在没有所有者的时候将数据清空
区别
普通的引用和智能指针额外区别是: 引用仅仅是借用数据的指针,而智能指针是拥有指向
的数据
引用的介绍
智能指针的实现
- Deref trait允许智能指针结构体实例表现的像引用一样,这样可以编写既用于引用,
又用于智能指针的代码。(解引用)
如C语言中:
1 | char *p = &a; |
- Drop trait允许我们自定义当智能指针离开作用域时执行的代码(drop析构)
标准库中的智能指针
用于在堆上分配
一个引用计数类型,数据可以为多个所有者
通过RefCell
Comment