智能指针

C++不是一种内存管理语言。动态分配的内存(即使用 new 创建的对象)如果未明确解除分配(使用 delete)将泄露。程序员有责任确保在丢弃指向该对象的最后一个指针之前释放动态分配的内存。

智能指针可用于自动管理动态分配的内存范围(即,当最后一个指针引用超出范围时,它将被删除)。

在大多数情况下,智能指针优于原始指针。它们通过在名称中传递对象是要共享还是唯一拥有,使动态分配的内存的所有权语义显式化。

使用 #include <memory> 可以使用智能指针。