指针

指针是一个包含内存地址的变量,地址指向其他数据。和C语言相同

智能指针

智能指针在现代C++中有过应用,Rust中智能指针是一类数据结构,表现和指针相同,但是
拥有额外的元数据(包括引用计数器 ),最明显的是拥有一个引用计数。

引用计数指定了指针的所有者有几个,并且在没有所有者的时候将数据清空

区别

普通的引用和智能指针额外区别是: 引用仅仅是借用数据的指针,而智能指针是拥有指向
的数据
引用的介绍

智能指针的实现

  1. Deref trait允许智能指针结构体实例表现的像引用一样,这样可以编写既用于引用,
    又用于智能指针的代码。(解引用)

如C语言中:

1
2
char *p = &a;
printf("p = %s",*p);//*p为解引用
  1. Drop trait允许我们自定义当智能指针离开作用域时执行的代码(drop析构)

标准库中的智能指针

用于在堆上分配

一个引用计数类型,数据可以为多个所有者

通过RefCell访问,一个在运行时而不是在编译时执行借用规则的类型